在非Main Activity中完全退出应用

先讲两个Intent的标记:
Intent.FLAG_ACTIVITY_NEW_TASK:
设置此状态,首先会查找是否存在 与被启动的Activity具有相同的亲和性的任务栈(即被启动的Activity是否创建过,创建过则存在)。

如果有,刚直接把这个栈整体移动到前台,并保持栈中的状态不变,即栈中的activity顺序不变
如果没有,则新建一个栈来存放被启动的activity

Intent.FLAG_ACTIVITY_CLEAR_TASK:

如果在通过Context.startActivity()启动activity时为Intent设置了此标识,这个标识将导致:在此activity启动之前,任何与此activity相关联的task都会被清除。也就是说,此 activity将变成一个空栈中新的最底端的activity,所有的旧activity都会被finish掉,这个标识仅仅和FLAG_ACTIVITY_NEW_TASK联合起来才能使用。

在非MainActivity中完全退出应用 只需要使用这两个标记就可以。

案例: 引导页面A 结束后 跳转 main页面B ,在main页面中监听back按键完全退出应用。

之前没有使用这两个Flag ,每次在main页面中System.exit(0) 或 finish()都返回引导页面中,不能直接退出应用。

原理:
利用task的特性(先进后出),在引导页跳转main页时 将已存在task清空 ,随后mainActivity将被放到task最底部。所以在mainActivity 中调用finish()或System.exit(0)时 直接退出整个应用

A –> B:只需要在跳转时 对intent设置 Flags即可

 Intent intent = new Intent();
 intent.setClass(A.this, B.class);
 intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_CLEAR_TASK);
 startActivity(intent);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值