1

我的应用程序有一个 Activity A 触发 B 和 B 依次触发 C。

Activity A 是清单文件中带有意图标志 android:noHistory="true" 的启动器。这显示了启动画面。2 秒后,它使用意图标志 FLAG_ACTIVITY_NO_HISTORY 触发 B。B 在没有任何意图标志的情况下正常触发 C。现在 Stack 将只有 Activity C。

在 Activity C 中,只要按下 back 就会触发 Activity B。现在 Stack 应该只有 Activity B 了。它不应该有任何其他活动的痕迹。

我在 Activity C 中使用了以下代码。但标志 FLAG_ACTIVITY_NEW_TASK 仅可从 API 11 获得。该应用程序应支持 API 8 中的设备。请帮助我使用正确的意图标志以实现解释的场景

代码:

         Intent dragDropIntent = new Intent("android.intent.action.DRAGDROP"); 
         dragDropIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
         dragDropIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

我同意在没有历史记录的情况下启动活动 C 会有所帮助。但是不要有一些技术限制,我不想这样做。提前致谢

4

3 回答 3

5

你正在寻找这个:

Intent intent = new Intent(activity, activityClass);
ComponentName cn = intent.getComponent();
Intent mainIntent = IntentCompat.makeRestartActivityTask(cn);
activity.startActivity(mainIntent);

使用来自 google 的 android 兼容性库 - 在 sdk 中找到。

或使用finish()

于 2014-01-29T23:43:53.807 回答
3

此标志现在可通过兼容性库获得:

IntentCompat.FLAG_ACTIVITY_CLEAR_TASK

希望这可以帮助 :)

于 2014-11-24T08:36:15.097 回答
0

如果 C 总是回到 B,那么你不应该使用 FLAG_ACTIVITY_NO_HISTORY。然后当用户在 C 中回压时,C 将由操作系统完成,堆栈现在只有 B。

于 2013-07-11T04:36:38.343 回答