优雅的退出所有Activity

什么是优雅式呢?

  • 即Receiver + singleTask.我们知道Activity有四种加载模式,而singleTask就是其中的一种,使用这个模式之后,当startActivity时,他先回在当前栈中查询是否存在Activity的实例,如果存在,则将其至于栈顶,并将其之上的所有Activity移除栈。我们打开一个app,首先是一个splash界面,然后会finish掉splash页面。跳转到主页。然后会在主页进行N次的跳转,期间会产生数量不定的Activity,有的被销毁,有的驻留在栈中,但是栈底永远是我们的HomeActivity。这样就让问题变得简单很多了。我们只需要两步操作即可优雅的实现app的退出。

1.在HomeActivity注册一个退出广播,和第二个广播是一样,但是这里只需要在HomeActivity一个页面注册即可。
2.设置HomeActivity的启动模式为singleTask

  • 当我们需要退出的时候只需要startActivity(this,HomeActivity,class),再发送一个退出广播。上面代码首先会把栈中HomeActivity之上的所有Activity移除栈,然后接到广播finish自己。一切OK!没有弹框,不用考虑机型Rom适配。不会有内存问题,就是那么的优雅,简单。

你可能感兴趣的:(优雅的退出所有Activity)