源码分析
文章平均质量分 85
android基础库及第三方库源代码分析
VipPeterGee
不忘初衷,方得始终
展开
-
LeakCanary2.7源码分析
文章目录简介1、LeakCanary的启动及初始化源码查看1.1 leakcanary-object-watcher-android AndroidManifest.xml中定义contentProvider1.2 AppWatcherInstaller.kt 中onCreate()2、内存泄漏检测怎么实现的2.1 ActivityWatcher2.2 FragmentAndViewModelWatcher2.3 RootViewWatcher2.4 ServiceWatcher3、流程图参考:简介本原创 2021-10-27 16:02:47 · 551 阅读 · 0 评论 -
ViewModel源码分析
Activity中ViewModel实例的获取private val mViewModel: DataTestViewModel by viewModels()可见viewModel的获取是通过viewModels代理类实现的,我们继续跟进通过代码查看,我们看到viewModels实际上是ComponentActivity的一个内联扩展方法@MainThreadinline fun <reified VM : ViewModel> ComponentActivity.viewMo原创 2021-09-30 16:50:53 · 371 阅读 · 0 评论 -
LiveData常用方法源码分析
1、postValueprotected void postValue(T value) { boolean postTask; // 同步锁 synchronized (mDataLock) { // 判断mPendingData是否为NOT_SET postTask = mPendingData == NOT_SET; // 对mPendingData赋值 m原创 2021-03-16 16:44:55 · 223 阅读 · 0 评论 -
抽丝拨茧——EventBus源码解析
一、 EventBus 注册1、EventBus.getDefault()通过DoubleCheck创建EventBus实例 public static EventBus getDefault() { if (defaultInstance == null) { synchronized (EventBus.class) { if (defaultInstance == null) { d原创 2020-06-05 17:41:20 · 167 阅读 · 0 评论 -
SparseArray基本使用及源码分析
一、简介1、适用于键为int的map数据结构类型2、适用于小规模数据存储3、内部使用二分查找进行数据查询,查询效率高4、不需要单独开辟内存来映射对象,节约内存二、基本使用1、创建mSparseArray全局变量 val mSparseArray=SparseArray<String>()2、添加操作添加过程中通过添加两个键重复,值不重复的两个数据,发现键重复,值覆盖...原创 2019-03-19 17:45:35 · 1334 阅读 · 0 评论 -
BroadcastReceiver和LocalBroadcastManager
BroadcastReceiver1、发送和接收广播 // 全局广播 // 发送 val intent = Intent() intent.action=ActionConstant.ACTION_ONE intent.putExtra("EXTRA", "全局广播") sendBroadcast(inte...原创 2019-03-04 10:58:52 · 400 阅读 · 0 评论 -
sharedPreferences使用及缓存机制分析
日常开发中经常使用sharePreference存储数据,非常简单快捷,下面我们将对此进行分析一、基本使用封装工具类方便调用class SpUtils{ private val context:Context=MyApplication.instance() private val sp:SharedPreferences=context.getSharedPreferenc...原创 2019-03-06 18:42:01 · 2740 阅读 · 0 评论 -
Activity生命周期、启动模式和startActivity源码分析
一、生命周期oncreate()、onStart()、onResume()、onPause()、onStop()、onDestory()、onRestart()、onNewIntent()二、启动模式Standard()每次启动activity都会在栈中创建一个新的实例SingleTask()每次启动activity都会判断栈中有没有该activity实例,如果没有则创建新的activ...原创 2019-03-05 17:38:54 · 670 阅读 · 0 评论 -
LruCache缓存机制
LruCache缓存机制基本使用:// 设置lruCache缓存大小 int maxLruCache= (int) (Runtime.getRuntime().maxMemory()/8); LruCache&lt;String,Bitmap&gt; lruCache=new LruCache&lt;String, Bitmap&gt;(maxLruCache){ ...原创 2019-03-01 14:58:12 · 640 阅读 · 0 评论 -
Android Service梳理
1、Context.startService()生命周期onCreate、onStartCommand、onDestroy停止service对应方法 stopService、stopSelfSTART_STICKY正常情况下只有当手动调用stopSelf或者stopService时才会关闭,内存不足关闭后会自动重启START_NOT_STICKY、只有当前进程保持接收命令的时候才会...原创 2019-03-01 14:03:43 · 516 阅读 · 0 评论 -
LayoutInflater源码解析
LayoutInflater.from(getApplicationContext()).inflate(R.layout.activity_main,null);上面这行代码我们在开发中经常会用来加载一个指定布局,但是它是怎样将布局显示到屏幕上的呢? 通过源码看看究竟:1、 LayoutInflater.from(context)通过context获取layoutInflate...原创 2018-07-20 18:05:50 · 285 阅读 · 0 评论 -
SetContentView源码解析
1、setContentView作用Set the activity content from a layout resource. The resource will be inflated, adding all top-level views to the activity.将布局资源文件设置activity上的内容,资源将会被渲染,添加到activity的顶级视图2、...原创 2018-07-20 14:15:42 · 323 阅读 · 0 评论 -
OkHttp源码分析
OkHttp源码分析1、基本使用// to create a shared instance with the custom settings// 共享client实例 public final OkHttpClient client = new OkHttpClient.Builder() // 设置拦截器 .addInterceptor(new HttpLo...原创 2018-07-04 17:48:41 · 520 阅读 · 0 评论 -
Retrofit源码分析
Retrofit源码分析1、优点A:支持同步和异步请求操作B:支持多种数据格式(Gson、Json、XML)C:使用注解方式配置请求参数,简单易用D:拓展性好,支持RxJava作为convertAdapter源码分析构建retrofit实例Retrofit retrofit = new Retrofit.Builder() .baseUrl("h...原创 2018-07-02 17:48:54 · 238 阅读 · 0 评论 -
AsyncTask基本使用及源码分析
一、使用案例 private class DownloadFilesTask extends AsyncTask { @Override // 任务执行前执行该方法 protected void onPreExecute() { } // 异步执行耗时操作 protected Long doInBackground(URL... urls...原创 2018-05-29 18:04:39 · 232 阅读 · 0 评论 -
Handler消息机制从发送到处理消息,调用流程
经过前两篇的流程梳理,已经对Handler、Looper、Message、MessageQueue、ThreadLocal有了整体了解,今天将调用流程进行梳理如下:原创 2018-05-22 13:51:52 · 429 阅读 · 0 评论 -
ThreadLocal源码流程梳理(Handler相关部分)
随着这篇流程梳理的完成,关于Handler相关的总体流程梳理结束原创 2018-05-21 18:08:22 · 253 阅读 · 0 评论 -
Message、MessageQueue源码流程梳理
上一篇把Handler和Looper源码流程进行了梳理,这一篇继续handler相关源码梳理 仍旧是Xmind思维导图MessageMessageQueue原创 2018-05-21 15:45:04 · 337 阅读 · 0 评论 -
Handler、Looper源码流程梳理
通过Xmind将Handler流程梳理成了流程图,供大家参考,如有不足,请指点原创 2018-05-18 16:20:22 · 228 阅读 · 0 评论