如何在Android中清除以前打开的活动
Posted
技术标签:
【中文标题】如何在Android中清除以前打开的活动【英文标题】:How to clear previously opened activity in Android 【发布时间】:2021-11-07 01:57:10 【问题描述】:Intent intent = new Intent(MainActivity.this, Payment.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
开启优惠券活动申请优惠券:
Intent intent = new Intent(Payment.this, Coupon.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
来自带有更新数据的优惠券活动打开付款活动
Intent intent = new Intent(Coupon.this, Payment.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
问题是,当我在应用优惠券后点击支付活动的返回按钮时,它会再次打开之前打开的支付活动(不是主要活动)。
onBackPressed() 我不想做静态的(比如 Intent intent = new Intent(Payment.this, MainActivity.class); 也不想在支付活动中使用 finish(); 。
请帮忙。
【问题讨论】:
为什么不想从onBackPressed调用MainActivity或者调用finish()? 因为支付活动从多个活动中打开 如何开始您的应用程序?从 IDE (android Studio) 还是从安装程序? 请试试这个:启动Payment
,然后Coupon
,然后再次Payment
。在按下 BACK 按钮之前,使用 adb shell dumpsys activity activities
,找到您的应用的任务堆栈并将其粘贴到问题中。
【参考方案1】:
您可以在启动支付活动时使用FLAG_ACTIVITY_NO_HISTORY
。
见:https://developer.android.com/reference/android/content/Intent#FLAG_ACTIVITY_NO_HISTORY
【讨论】:
【参考方案2】:这是startActivityForResult
的一个简单用例,不要因为意图标志和启动模式而变得复杂。
每当您打开您的活动Coupon
时,只需使用startActivityForResult
并在应用优惠券后将结果发送回之前的活动(成功/失败)或您想要的任何结果。然后,您可以根据在 onActivityResult()
中获得的结果更改 UI。
您可以关注How to manage startActivityForResult on Android 或来自文档Getting a result from an activity 的最新方式。
【讨论】:
以上是关于如何在Android中清除以前打开的活动的主要内容,如果未能解决你的问题,请参考以下文章