android删除活动,如何清除Android应用中的所有活动

我的应用程序有很多活动,可以按任意顺序调用

活动历史记录示例:

A-> B-> C-> D-> A-> B-> Ë

现在在活动E中,我正在“注销”设备(注销用户,并删除他们可能已下载到sdcard的所有数据).期望的行为是该应用程序“重新启动”,并且提示用户进行登录活动,然后单击该按钮将使用户返回主屏幕.

因此,现在,活动E应该以某种方式清除活动堆栈.当前,当我从E启动A的意图时,我正在设置FLAG_ACTIVITY_CLEAR_TOP.问题是,当用户访问A然后进入中间活动并在转到E之前再次访问A时,堆栈上仍然有活动.

A-> B-> C-> D->一种

因此,该用户已注销,无法使用活动B-D,但是如果用户从活动A回击,则他们可以访问活动B-D.是否有一种简单的方法可以从堆栈中清除除登录活动以外的所有活动?

更新:

因此,我尝试更新BaseActivity(我的应用程序中的每个活动都将其子类化)以包含一个静态标志isDeregistering,该标志告知活动如果为true则自行销毁.问题是,每个活动都调用finish(),并且我被引导到主屏幕,并且在强制关闭应用程序之前无法重新启动应用程序.有一个更好的方法吗?

解决方法:

我想出了一个可行的解决方案.以下代码进入了我的BaseActivity类.

public boolean killIfDeregistering() {

if (isDeregistering) {

Log.d(TAG, "deregistering true!");

if (getClass().getName().equals(LoginActivity.class.getName())) {

//don't destroy activity, reset flag

Log.d(TAG, "stopping deregister process!");

isDeregistering = false;

} else {

//finish the activity

Log.d(TAG, "killing this activity!");

finish();

return true;

}

}

return false;

}

使用反射,我可以决定是否终止基本活动,以便家庭启动器可以在LoginActivity处重新启动应用程序.我只需要确保在通过手动调用finish()执行登录后,LoginActivity不会保留在堆栈中.

标签:android

来源: https://codeday.me/bug/20191209/2096385.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值