现在的位置: 首页 > 综合 > 正文

一次退出多个Activity的方法

2018年01月11日 ⁄ 综合 ⁄ 共 968字 ⁄ 字号 评论关闭

    面试的时候多次被问到一次退出多个Activity的方法,其实方法是有多种的,其实主要考对Android机制的理解和运用。我参考各们网友的东西加上自己的思考,觉得有下面几种方法:

1.使用链表把要退出的Activity实例保存起来,在要退出时,遍例这个链表,调用每个Activity的finish方法。具体点讲:
在每个Activity的onCreate方法中添加类似代码:SysApplication.getInstance().addActivity(this);在需要退出程序的时候,调用:SysApplication.getInstance().exit();简而言之,通过单例模式把每个Activity 的引用添加到一个全局链表中,每次退出程序调用System.exit(0)时,先调用链表中Activity 的finish方法.

2.可以使用广播,每个Activity中收到这个广播,自己把自己finish掉。

3.可以在要退出Activity的onStart方法中加入以下code:

   MyApplication mApp = (MyApplication)getApplication();
   mApp.setExit(true);
   finish();

4.假如Activity的启动顺序是:A->B->C->D,我们想在D中把所有的Acitivity都清理掉,那么做法是:

   A的Manifest.xml配置成android:launchMode="singleTop" ,D窗口打开A窗口的Intent加入标识Intent.FLAG_ACTIVITY_CLEAR_TOP,这样会把栈中B

 C,D都清除掉,同时因为A是的启动模式是singleTop,不会调用onCreate,而是调用onNewIntent,这时判断intent的值,如果为Intent.FLAG_ACTIVITY_CLEAR_TOP,则把A finish掉,这样A,B,C,D都finish掉了。

5.还是Activity的启动顺序是:A->B->C->D,可以把A的起动模式设成singleTask,从D起动A,会把栈中位于他之上的Activity都kill掉,然后在A的onNewIntent中把A
finish掉。


上面是几种方法,应该都可以,具体的应用就要看场景了。


抱歉!评论已关闭.