之前猴子是讨厌读别人的源码的,一是因为项目太大,一时半会吃不完。二是懒。近一段时间,加班非常频繁,究其原因,项目时间本来就紧,这是猴子所控制不了的。还有就是猴子技能有限,蓝不够用啊。于是想到进阶。oschina的部分源码是开源了的,这是一份不错的源码,技术复杂度并不是很高,有很多值得学习借鉴的地方。猴子要在oschina的android源码分析学习系列中,记录一些学习心得。
先说说oschina对activity的管理。
oschina对activity的管理是采用了一个AppManger的自定义类来实现的。这个类持有一个Stack<Activity>,由于对于activity的操作基本都是对栈顶进行的,所以采用Stack来统一管理最合适不过了。
由于AppManger管理着应用的所有Activity,所以,AppManger这个对象必须保证在整个应用唯一,别无选择的将这个对象设计成了单例。
AppManger提供的方法:
添加acticity到Stack,每个 activity启动的时候,都会掉用此方法来注册一下。
获取当前activity
结束当前activity
结束指定activity
结束所有activity
获取指定activity,如果指定activity没有实例化过,则返回null
退出应用程序
这个对象提供的方法并不多,猴子以为,activity作为系统组件之一,而且是最常用的组建,系统已经为activity提供了丰富的API供开发者掉用,包括activity的生命周期以及各种回调方法。所以在AppManger这里就不需要封装太多的方法了。