Activity的启动流程
备注:Android 11源码 本文基于Android 11的源码分析,简要的跟踪以下Activity的启动流程,发现在一些细节已经发生变化,例如没有出现ActivityManagerService,而是出现了ActivityTaskManagerService。 客户端的调用 当我们调用star ...
阅读更多
理解上下文 Context
Context理解 Context理解为上下文对象,是一个应用程序环境信息的接口,也就是说通过Context对象来保存应用相关信息。Activity、Service、Application都间接继承自Context,Context是一个抽象类,内部定义了很多方法和静态常量,它的具体实现类是Cont ...
阅读更多
Android 绘制流程
Android View的绘制流程分为三大流程:测量、布局、绘制。三大流程都开始于ViewRootImpl的performTraversals函数。通过了解三大流程的顺序和原理,支撑日常开发工作。 一、测量流程 三大流程都是始于ViewRootImpl的performTravels函数,先是从调用 ...
阅读更多
Android 启动优化
统计启动时间 adb查询 adb shell am start -W packageName/targetActivity 不适合线上,且时间非准备。适合分析竞品 手动打点 定一个辅助类,记录开始和结束的时间,其实时间差就是启动时间。 1234567891011121314151617181 ...
阅读更多
Handler 消息机制
Android 通过Binder机制来解决进程间通信问题,而通过Handler消息机制来解决线程之间通信问题,或者用来切换线程。毕竟Android要求只能主线程更新界面,对于耗时操作和网络请求都需要在其他线程执行,就涉及到线程切换。 Android应用都是靠消息来驱动工作的。大致原理就是: 一个消 ...
阅读更多
Binder 机制
在Linux系统中,采用的是虚拟内存地址,分为内核空间和用户空间,运行在内核空间的进程可以直接进行通信,常为系统进程。而客户程序进程则运行在用户空间,它们之间的通信则需要通过内核空间进行。这样区分主要避免客户程序直接操作内核空间,影响系统的正常运行,对系统的操作交给执行在内核空间的操作系统的程序去执 ...
阅读更多
RxJava3 源码分析
摘要 作为Android主流框架之一,简洁的线程切换和丰富的功能操作符,再配合OkHttp+Retrofit,组合成了APP必备框架,深得Android开发者的喜爱。本文基于最新的RxJava3,分析其工作原理,以及线程切换原理。 简单入门 添加依赖: 12implementation "io. ...
阅读更多
EventBus 源码分析
摘要 本文分析Android主流的事件框架EventBus,尤其在不同的界面触发函数的调用,避免层层嵌套回调。通过源码分析,了解EventBus如何查找订阅方法,切换线程,发布事件的原理。 前言 我们将根据下面的例子来分析EventBus的源码。 123456789101112131415161 ...
阅读更多
Glide 源码分析之数据
摘要 作为Glide的第二篇,主要分析了Glide请求中数据来源,或者说Glide的缓存机制。Glide构建过程会配置很多注册项,然后在获取数据时,会根据已有的信息,如dataClass等,然后找到合适的ModelLoader、Decoder、Transcoder等,经历了四个缓存历程,没有找到合 ...
阅读更多
Glide 源码分析之流程
摘要 Glide流程三步曲with、load、into三个函数,完成一次Glide请求。with的主要工作是首次创建Glide单例,并装配Glide各种配置参数和创建相关实例,这些都会在into函数中被使用到,第二个要点就是与Fragment的生命周期绑定,让Glide请求能感应到生命周期的变化, ...
阅读更多