一键退出

最近一个朋友找我帮忙给他们的老项目增加一点新功能,顺手记录下get到的知识点。

;
这是一个团队已经解散了的项目,当然互联网项目也没见过几个能坚持下来的。但是原老板不愿意放弃,让我给帮忙加几个功能(当然是收费的)。其中有一个功能就是一键退出功能,一般来说就是给简单加上一个ActivityStack 来保存所有的Activity,其实也就是给BaseActivity的生命周期中添加addremove。但是他们这个老项目却有100多个Activity,其中大概有3分之1的是直接继承Activity,这下就麻烦了。还要去手动的去给没有继承base的Activity一个个的绑定方法,这样可太麻烦了。
于是我多次查找,思路是能不能在Application监听到所有的Activity的启动流程,然而真的发现了这个接口,它就是ActivityLifecycleCallbacks,它能够监听到每一个Activity的生命周期,于是这样问题就简单了。
首先看看ActivityLifecycleCallbacks的内部方法

可以看到这个方法和Activity生命周期基本是一一对应的,所以在对应的接口方法中去实现对应的操作即可

最后要退出的时候遍历Stack执行finish操作然后将其clear掉就行了。
so easy 也算了解到一些极少为人知的知识点吧,顺手做个笔记。