Posts


Android LruCache实现分析

LruCache 是安卓开发中常用到的缓存技术,LRU 的全名是 Least Recently Used,表示最近最少使用算法,也就是说当内存快到达阈值时,若某个对象最近很少使用的,那么它就会被回收掉以释放内存。

[阅读全文]

Android 系统服务启动 SystemServer

在之前 Android 系统服务管理 ServiceManager 中学习了各种系统服务 Service 都是通过 ServiceManager 来管理的,从 ServiceManager 中来获得系统服务的 Binder 对象引用。这内容涉及到了 ContextImpl 类、SystemServiceRegistry 类、ServiceManager 类、ServiceManagerNative 类等等。

那么问题就来了,ServiceManager 所管理的那些 Service 的 Binder 对象引用又是何时注册添加的呢?

事实上这些服务 Service 是 SystemServer 进程中启动的。

[阅读全文]

Android 系统服务管理 ServiceManager

在应用程序编程时,经常使用到 getSystemService(String serviceName) 方法来获得一个系统服务,它的实现也是在 ContextImpl 中的,根据不同的参数返回不同的系统服务,这些系统服务都是由 ServiceManager 管理的。

[阅读全文]

Android 6.0 Launcher 启动 Activity 过程分析小结(四)

 Android 6.0 Launcher 启动 Activity 过程分析小结(四)

在如下三篇文章中过了一遍 Launcher 启动 Activity 的代码流程。

然而, 即使看过了多遍代码流程依旧有点云里雾里的感觉。不从整体上来把握,光抓住细节代码会始终不得要领。

由于是从 Launcher 组件启动一个 Activity 组件,其中还需要与 ActivityManagerService 通信,而这三个部分都是位于不同的进程内,涉及进程间通信,因此可以将整个过程划分为三个不同的部分来分析,在 Launcher 进程内的操作,在 ActivityManagerService 进程内的操作,在创建的应用程序进程内的操作。

[阅读全文]

Android 6.0 Launcher 启动 Activity 过程源码分析(三)

Android 6.0 Launcher 启动 Activity 过程源码分析(三)

Android 6.0 Launcher 启动 Activity 过程源码分析(二) 分析完了对待启动 Activity 组件的验证过程,获得组件信息,以及 ActivityRecord 添加至栈顶,将其他 Activity 进入中止状态,最后将待启动的 Activity 组件进入 Resumed状态,然而,由于待启动的 Activity 组件的应用程序进程尚未启动,最后执行 startSpecificActivityLocked方法创建进程。

[阅读全文]