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