一次退出多个Activity的方法

    面试的时候多次被问到一次退出多个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掉。


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


  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值