我的应用程序有一个活动A,它触发B和B依次触发C.
活动A是清单文件中具有intent标志android:noHistory =“true”的启动器。这显示了启动画面。 2秒后,它会使用意图标志FLAG_ACTIVITY_NO_HISTORY触发B. B正常触发C而没有任何意图标志。现在Stack将只有Activity C。
在活动C中,每当按下后退它将触发活动B.现在,堆栈应该单独使用活动B.它不应该有任何其他活动的痕迹。
我在活动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会有所帮助。但是我不想做一些技术限制。在此先感谢
答案 0 :(得分:5)
你正在寻找这个:
Intent intent = new Intent(activity, activityClass);
ComponentName cn = intent.getComponent();
Intent mainIntent = IntentCompat.makeRestartActivityTask(cn);
activity.startActivity(mainIntent);
使用google的android兼容性库 - 在sdk中找到。
或使用finish()
答案 1 :(得分:3)
此标志现在可通过兼容性库获得:
IntentCompat.FLAG_ACTIVITY_CLEAR_TASK
希望这会有所帮助:)
答案 2 :(得分:0)
如果C总是返回B,则不应使用FLAG_ACTIVITY_NO_HISTORY。然后当用户在C中进行背压时,操作系统将完成C并且堆栈现在只有B。