之前就有写过一篇文章来学习状态机:状态机学习。
在之后的工作中多次用到了 StateMachine 状态机,简单记录其原理。
[阅读全文]LruCache 是安卓开发中常用到的缓存技术,LRU 的全名是 Least Recently Used,表示最近最少使用算法,也就是说当内存快到达阈值时,若某个对象最近很少使用的,那么它就会被回收掉以释放内存。
[阅读全文]在之前有分析过 Android 6.0 Launcher 启动 Activity 过程,文章的链接如下:
在之前 Android 系统服务管理 ServiceManager 中学习了各种系统服务 Service 都是通过 ServiceManager
来管理的,从 ServiceManager 中来获得系统服务的 Binder 对象引用。这内容涉及到了 ContextImpl
类、SystemServiceRegistry
类、ServiceManager
类、ServiceManagerNative
类等等。
那么问题就来了,ServiceManager 所管理的那些 Service 的 Binder 对象引用又是何时注册添加的呢?
事实上这些服务 Service 是 SystemServer 进程中启动的。
[阅读全文]在应用程序编程时,经常使用到 getSystemService(String serviceName) 方法来获得一个系统服务,它的实现也是在 ContextImpl 中的,根据不同的参数返回不同的系统服务,这些系统服务都是由 ServiceManager 管理的。
[阅读全文]总结一下 Material Design 控件使用。
[阅读全文]总结一下 Material Design 控件使用。
[阅读全文]Binder 是什么?在英文中 Binder 是 粘合剂 的意思,表示将两样东西粘在一起。而在 Android 开发中,Binder 的意思多了去了。不同的角度有着不同的解释。
它既可以是 Android 中实现了 IBinder 接口的一个单纯的类,也可以是 Android 中进程跨进程通信(IPC)的一种方式,还可以看作是工作在内核态的 Linux 驱动 /dev/binder
。
Dagger2 是一个进行依赖注入的框架,早先是由 Square 公司写的,后来由 Google 来维护了,能由 Google 亲自维护的东西,肯定值得学习。
[阅读全文]在如下三篇文章中过了一遍 Launcher 启动 Activity 的代码流程。
然而, 即使看过了多遍代码流程依旧有点云里雾里的感觉。不从整体上来把握,光抓住细节代码会始终不得要领。
由于是从 Launcher 组件启动一个 Activity 组件,其中还需要与 ActivityManagerService 通信,而这三个部分都是位于不同的进程内,涉及进程间通信,因此可以将整个过程划分为三个不同的部分来分析,在 Launcher 进程内的操作,在 ActivityManagerService 进程内的操作,在创建的应用程序进程内的操作。
[阅读全文]