最近一个朋友找我帮忙给他们的老项目增加一点新功能,顺手记录下get到的知识点。
;
这是一个团队已经解散了的项目,当然互联网项目也没见过几个能坚持下来的。但是原老板不愿意放弃,让我给帮忙加几个功能(当然是收费的)。其中有一个功能就是一键退出功能,一般来说就是给简单加上一个ActivityStack
来保存所有的Activity
,其实也就是给BaseActivity
的生命周期中添加add
和remove
。但是他们这个老项目却有100多个Activity
,其中大概有3分之1的是直接继承Activity
,这下就麻烦了。还要去手动的去给没有继承base的Activity
一个个的绑定方法,这样可太麻烦了。
于是我多次查找,思路是能不能在Application
监听到所有的Activity
的启动流程,然而真的发现了这个接口,它就是ActivityLifecycleCallbacks
,它能够监听到每一个Activity
的生命周期,于是这样问题就简单了。
首先看看ActivityLifecycleCallbacks
的内部方法
可以看到这个方法和Activity
生命周期基本是一一对应的,所以在对应的接口方法中去实现对应的操作即可
最后要退出的时候遍历Stack
执行finish
操作然后将其clear
掉就行了。
so easy 也算了解到一些极少为人知的知识点吧,顺手做个笔记。