以下是我这个系列的相关文章,有兴趣可以参考一下,可以给个喜欢或者关注我的文章。
[Android]如何做一个崩溃率少于千分之三噶应用app--章节列表
我建立了一个关于Android架构学习的群,里面可以进一步进行组件化学习的交流。
群号是316556016,也可以扫码进群。我在这里期待你们的加入!!!
在这里先提一个问题,你是否考虑过在App里面加入自定义的栈来管理Activity?为何需要这样管理Activity呢?
很多人会想到Activity本来不就已经有栈管理的方式啦,有可以自定义它启动排列的规则,例如standard,singleTop,singleTask等。那自定义管理Activity的在于哪里呢?
如果你只是考虑想要如何完全退出栈内的全部Activity的话,这编文章应该是需要的。
我们很多情况下想完全退出App,会做一个自定义的栈来管理相应的Activity。
但是条条大路通罗马,完全退出App,并不一定需要自定义的栈来作管理。
这里推荐的方法。
1.你需要一个事件总线,例如EventBus,或者你本来工程就有自己写好的事件总线。
2.很多情况下,我们写Activity都会继承一个例如命名为BaseActivity基类,此类里面作一些共性的操作。
看到这里是否有一定的头绪,想到我想如何做?那就继续往下看吧
1.我们先定义一个AppExitEvent的类,用于EventBus的事件传输(如果不清楚EventBus是什么,那就请自己恶补一下吧)
2.在我们的BaseActivity 的onCreate里面注册EventBus,onDestroy里面注销EventBus
注册 注销3.然后定义一个send的方法
发送AppExitEvent4.然后定义接收事件,用finish结束Activity
接收事件这里所有栈内的继承于BaseActivity的Activty都会接收到事件,然后调用finish结束Activity
5.这样App就只会有一个结束出口,想要完全退出程序的时候,只要调用sendExitEvent的方法
这样做的优点,不需要做到用自定义栈去管理Activity,但是能将自己想要信号传送到每一个Activity。
如果我们想要在推出前加入一些操作,例如想发一个广播,需要如何做?
那么我们可以在sendExitEvent里面,发送event前,写一个广播就可以了。
这里确定要完全退出app,还推荐在finish后使用System.exit(0),这样会写提示虚拟机kill掉进程。
*2016.12.09更新
推荐System.exit(0),是为了提示系统的一些缓存也做出退出操作,我曾经遇到过,不使用这个,会出现登录的账号没有完全退出,下次登录会提示账号的问题。
如果有更加好的建议和想法,欢迎在评论留言。
网友评论
http://blog.csdn.net/totond/article/details/72960211
不懂完全退出app的含义是什么,系统的栈空了,自然就回到桌面了。自定义栈+弱引用是可以的,只是这样的栈能用来做什么…
System.exit(0);
这两个方法我都加上了。。。