自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 收藏
  • 关注

原创 flutter-异步编程

首先看一张Flutter体系结构图:我们只关注线程相关信息1、Framework:我们直接接触的层级2、engine:Dart Isolate Setup,创建Isolate,类似于DartVM中的线程,他的架构就是一个循环:event loops但这一层并不创建及管理线程,它要求Embeder提供四个Task Runner,也就是和真正的线程类似的玩意,并不是真正的线程。因为尽管Fl...

2019-09-29 09:47:28 463

原创 Android性能优化神器-AspectJ

一、AOPAOP:面向切面编程(Aspect-Oriented Programming)。如果说,OOP如果是把问题划分到单个模块的话,那么AOP就是把涉及到众多模块的某一类问题进行统一管理。比如有三个模块:登陆、转账、大文件上传,现在需要加入性能检测功能,统计这三个模块每个方法耗时多少。OOP思想做法是设计一个性能检测模块,提供接口供这三个模块调用。这样每个模块都要调用性能检测模块的接...

2019-09-19 17:21:08 1064 3

原创 Android Jetpack--lifecycle全解析

1、概述google的jetpack已经出来很久了,最近项目中用接入后,也是遇到了不少坑。于是抽时间好好研究了下lifecycle、livedata、viewModel等源码,本文就来介绍一下lifecycle的用法及原理。2、设计初衷先来一句官方解释:android.arch.lifecycle 包提供了可以用于构建生命周期感知(lifecycle-aware)组件的类和接口,这些组件可以...

2019-04-17 15:18:53 2046

原创 Dagger2新版注解及源码解析

一、序接:Dagger2.1不是Dagger2demo地址:https://github.com/mrqatom/DaggerInjection通过学习,我们知道了新版Dagger的用法,可是作为有追求的骚年,不能仅仅成为API的搬运工,必须要了解一下其中具体的用法以及实现方式。首先我们来看看几个注解的具体作用。二、@Component.Builder我们在AppCompone...

2018-08-30 10:38:35 597

原创 Dagger2.1不是Dagger2

一、前言在学习android architecture components(简称acc)时下载了google官方demo,demo里有一部分是关于dagger+mvvm(mvp)+acc的,本以为阅读起来没有压力但结果却是一脸懵逼,是的,dagger的写法以及注解完全陌生。难道dagger更新了?本着落后就要挨打的原则去google了一番,发现国内资料通篇都是dagger原本的用法,并没有找...

2018-08-21 19:02:54 692

原创 支持资源文件替换的多渠道打包插件(四)

系列文章: 从Android Plugin源码开始彻底理解gradle构建:初识AndroidDSL(一)从Android Plugin源码开始彻底理解gradle构建:Extension(二)从Android Plugin源码开始彻底理解gradle构建:Task(三)一、写在前面经过前面几篇文章的学习(什么?你还没看,赶紧去补补!),对gradle已经有了大致的了解了,当学习...

2018-06-04 14:23:32 1244

原创 从Android Plugin源码开始彻底理解gradle构建:Task(三)

系列文章: 从Android Plugin源码开始彻底理解gradle构建:初识AndroidDSL(一)从Android Plugin源码开始彻底理解gradle构建:Extension(二)一、前言回顾首先我们依然回顾一下basePlugin里的三个回调: //plugin的基础设置、初始化工作 threadRecor...

2018-06-01 16:48:55 3861 2

原创 从Android Plugin源码开始彻底理解gradle构建:Extension(二)

系列文章: 从Android Plugin源码开始彻底理解gradle构建:初识AndroidDSL(一)一、前言回顾        上回我们说到Android plugin的所有自定义plugin都需要重写的apply方法,并讲到该方法里最为重要的三个回调方法,我们回顾一下: threadRecorder.record( Exec...

2018-05-23 23:35:51 3582 2

原创 从Android Plugin源码开始彻底理解gradle构建:初识AndroidDSL(一)

一、写在前面        本系列适合人员:对gradle基础有一定了解。        由于gradle已经出来很久了,相关配置文章也比较多,所以就从头开始说了,这里推荐几篇文章:        https://www.jianshu.com/p/8b8a550246bd        刚哥(任玉刚)亲笔:https://blog.csdn.net/singwhatiwanna/article/...

2018-05-21 16:31:54 4970

原创 【Rxjava2源码系列】线程调度(二)

一、前言上一篇文章:【Rxjava2源码系列】基本订阅、消耗事件流程(一) 已经弄清楚了Rxjava的整体流程,本文就来看看Rxjava强大的线程转换能力。相信大家最常用到Rxjava的地方就是利用Retrofit做网络请求了吧?不仅如此,只要有耗时操作,都可以考虑利用Rxjava来实现,就是这么任性。本文要研究的包括 1、线程调度如何实现?2、subscribeOn、observ...

2018-04-27 15:40:46 488

原创 【Rxjava2源码系列】基本订阅、消耗事件流程(一)

一、前言Rx系列已经出来很久了,笔者也在很早就把他加入项目里使用了,具体使用方法相信大家都很熟悉了,这里就不多讲了。可是虽然用了很久,一旦过一段时间不接触就会生疏,用的时候也比较忐忑,生怕哪里会出问题。所以下决心研究一下他的源码,所谓知己知彼百战不殆。这里就不列出使用方法了,网上资料已经很多了,也可以去官网上看。我觉得RX最核心的就是:异步以及他的操作符。本文先了解一下他的基本流程,他究竟...

2018-04-26 17:39:11 636

原创 【Android源码系列】界面的呈现-WindowManagerService

一、前言作为Android开发,我们都知道界面就是Activity,通过实现Activity然后控制其生命周期就能将界面展现给用户。那Activity究竟是如何将界面展示出来的呢?或者说展示界面一定需要Activity吗?这就需要知道今天要说到的WindowManagerService(WMS)了。二、简单认识一般情况,我们需要写一个View,都会在activity的XML布局里添...

2018-04-10 08:16:39 1174

原创 【Android源码系列】如何解析APK-PackageManagerService

一、惯例BB新的一年又到了,2018也要加油啊~距离写上一篇文章也有一个月了,今天我们就来看看PackageManagerService(以下简称PMS)。 PMS和AMS、WMS一样,也是一个系统服务,他的主要作用就是解析APK信息,并保存下来。我们平时写在Manifest里的信息是如何被解析的呢?没错都是他干的。还记得我在前面一篇文章《 VirtualAPK插件化方案原理探索》里留下了一个坑:

2018-01-04 11:18:01 770

原创 【Android源码系列】消息机制:Handler源码解析

前言这篇文章本来应该前几天就出炉的,不过笔者当时正看得起劲,头忽然昏的不行,心想难道是撸多了?咳咳..最后脑供血不足去医院检查了一下,做了脑部CT发现很健康,这就奇怪了。后来想想应该是当时门窗都关的太严实了,刚好外面装修的甲醛充满了房间..所以各位在学习的同时一定要锻炼身体啊(好像也没啥因果关系- -),不然什么都是浮云了…. 进入正题,之前我们研究四大组件源码时,有一个H类大家印象一定很深刻(滑

2017-12-01 16:24:37 585

原创 VirtualAPK插件化方案原理探索

一、前言最近刚好在看任玉刚的《安卓开发艺术探索》,学到了不少东西。前面刚写完四大组件的原理分析,算是对Android组件进一步了解。趁热打铁,了解一下滴滴出品的VirtualAPK插件化方案,同样是刚哥参与的,站在巨人的肩膀来看看。 插件化、热更新在国内近段时间相当火热,我们也得跟上啊。学习插件化不仅仅只有”插件化”这么简单而已,涉及到相当多的知识,对我们提升还是有一定帮助的。之前也看过鸿洋的文章

2017-11-21 19:02:47 1052 4

原创 【Android源码系列】ContentProvider启动源码解析

一、前言终于到了ContentProvider,四大组件的尾声了。一般情况(至少我是这样),用到ContentProvider的机会不多,他是Android专门用来跨进程通信使用的,底层也是binder实现。怎么实现的呢?往下看吧。 一般我们使用的场景是这样的: Uri uri = Uri.parse("com.ooo.xxx"); getContentResolv

2017-11-15 15:04:02 394

原创 【Android源码系列】BroadcastReceiver启动源码解析

一、先BB两句Android四大组件源码已经分析完Activity和Service,已经攻克一半,现在读起源码越来越得心应手。 阅读本篇文章前建议先阅读我的前两篇博文: 【Android源码系列】Activity启动源码解析 【Android源码系列】Service启动源码解析 今天我们来看看BroadcastReceiver(广播)的源码逻辑,此前说过的流程在这里可能会简化(懒)。其实他们

2017-11-13 11:45:08 579

原创 【Android源码系列】Service启动源码解析

一、写在前面上次说了Activity启动,我们接着来看Service。同为四大组件,两者的启动方式相差不多,有了上次的经验,分析起来得心应手。但是我们知道Service有两种方式:start&bind。Intent intent = new Intent(MainActivity.this, StartService.class); startService(inte

2017-11-09 12:43:07 642

原创 【Android源码系列】Activity启动源码解析

一、前言最近看《Android开发艺术探索》大多涉及到源码解析,仅仅看书有点云里雾里,于是配合着源码一起看感觉清晰许多。网上很多推荐source insight看源码,下来之后体验感觉一般,还不如AS直接看。老罗有专门的源码查看教学,但是需要Linux(Ubuntu)/MAC机器,暂时没条件以后考虑(老罗讲的比较深入,值得长期跟)。总之还是在AS里看(求推荐),强烈推荐浏览本文时和着源码。二、源码解

2017-11-07 17:20:24 659

原创 真-ViewPager与ScrollView间的ViewPager消失及滑动冲突关系

前话今天公司项目遇到了ViewPager+ScrollView的布局方式,水平滑动+垂直滑动,可想而知可能会产生冲突。作为老司机,自信满满的准备好了解决冲突的方案,开撸。 写好运行一波后发现,尼玛啊,ViewPager不见了,说实话以前还真没有写过这种嵌套。没办法,试试将ViewPager固定一下高度呢,看看它存不存在。还真在,这下能看见了。可是不科学啊,我怎么知道页面数据有多少呢,固定值肯定行不

2017-07-26 20:31:39 517 1

原创 Android多进程IPC机制——binder原理探索

说到进程,刚开始学Android的时候无法理解进程和线程的区别,我的理解是:线程就是工作台,完成一件工艺品需要多道工序(可同时操作此作品,其中就涉及到线程安全),而进程是车间,当工厂越来越大,你需要的工作空间(内存)越来越多,就需要再建一个车间来作业了,进程就是如此。我们新建一个进程很简单:<activity android:name="com.example.MyProc

2017-06-06 17:50:56 554

原创 非常简易的Rxjava2+Retrofit2封装

学习了一段时间Rxjava2、Retrofit2,为了以后项目能直接用,决定自己手动封装一下,虽然网上也有不少Demo,但是为了加深印象,还是根据自己的理解简单的封装一下。文章中涉及到的Rxjava2、Retrofit2基础知识就不再多说,大家自行google即可。首先写一个mHttpRequest ,作为网络请求接口public interface mHttpRequest { //参

2017-04-07 16:27:09 2736

转载 Android-Lint工具使用

在做资源清理的时候无可避免的用到了Android-Lint,本文主要讲述Android-Lint的使用以及使用中的一些注意事项。Android-Lint是SDK Tools 16 (ADT 16)之后才引入的工具,通过代码检查,可发现潜在的问题,并能对Android程序进行优化处理。在AndroidStudio中已经集成了该工具,下面直接演示使用方法。如图,在顶部菜单栏找到

2017-02-07 10:28:39 454

原创 Android性能优化系列—布局优化

最近在看性能Android优化方面的书,总结一下,以及记录自己的理解。1、include 当应用重复使用同一个布局时,如果按正常布局写法,会导致很多重复内容,修改时也会全部修改,可能导致错误。这样就可以使用include标签来公用同一个布局。最常用的就是我们的app标题栏。<LinearLayout xmlns:android="http://schemas.android.com/ap

2017-02-03 22:21:21 291

原创 多线程--异步任务AsyncTask由浅入深探究

养成写博客的习惯,帮助大家的同时自己知识也能得到巩固,本文大多是我的读书心得,比较基础,希望能给大家一点帮助。一般我们执行耗时任务,都是通过Thread执行,然后再通过Handler更新UI,虽然这种方式对整个过程控制很精细,但是代码相对臃肿,Android1.5后提供了工具类AsyncTask.一般执行AsyncTask步骤为: 1、execute:通过execute(param… par

2016-12-18 15:40:57 343

原创 多线程--callable、Future、FutureTask

除了Runnable外,JAVA中还有callable、Future、FutureTask这几个线程。与Runnable不同的是,他们只能运用到线程池中,而Runnable可以使用到Thread中。一、Callable 他和Runnable功能大致相同,不同的是他有一个返回值。 他的声明如下:public interface Callable<V> {//返回V类型的结果V call()

2016-12-18 13:19:31 246

原创 Android多线程--线程锁总结

最近准备将自己的学习笔记记录下来,养成写博客的习惯,一下内容是根据书上和网上资料整合而成,同时也有一部分自己的理解。一、synchronize同步锁(内置锁) 为了防止多线程同时操作同一个位置,可以上锁的有对象和class。public class synchronizedDemo{//同步方法public synchronized void method{//doSomething}

2016-12-10 20:43:59 1435

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除