Intent.FLAG_ACTIVITY_CLEAR_TASK替代方案

2022-09-01 07:51:26

我有两个应用程序 App-B 启动 App-A。如果用户从应用程序 A 内部启动应用程序 B,我在应用程序 A 上调用完成,因此我没有问题。

如果用户从应用程序抽屉直接进入应用程序B或长按主页按钮,那么我实现以下操作,在应用所有附加功能之前先清除应用程序A中的任务。这具有所需的效果,但仅适用于 API 11。在较低的API上,APP-A中的新任务不会改变,额外的putExtra也不会产生任何影响。任何替代方案 ?对于 API <=10?FLAG_ACTIVITY_CLEAR_TASK

        Intent i = new Intent("com.App-A");
    i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);

谢谢

杰森


答案 1

新的 IntentCompat 应该对此有所帮助,但显然,对于低于 11 的 API,该标志将被忽略。

要使用 IntentCompat,请执行以下操作:

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK |
IntentCompat.FLAG_ACTIVITY_CLEAR_TASK);

答案 2

这将正常工作

i.addFlag(Intent.FLAG_ACTIVITY_NO_HISTORY | 
               Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);

推荐