我需要运行一个活动,但要清除所有后台堆栈,即使是我运行新活动的活动。
这是一个例子。
A->B
活动A启动活动B
我在启动活动B时尝试使用以下标志。
Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK
Intent.FLAG_ACTIVITY_NO_HISTORY
但是当活动B启动时,我仍然可以在任务中看到活动A. 使用以下命令
adb shell dumpsys activity | grep -i run
得到以下结果
Running activities (most recent first):
Run #0: ActivityRecord{5296b78c u0 com.android.launcher/com.android.launcher2.Launcher t1}
Running activities (most recent first):
Run #2: ActivityRecord{528a3310 u0 com.test.app/com.test.app.B t19}
Run #1: ActivityRecord{52bb7a34 u0 com.test.app/com.test.app.A t19}
Run #0: ActivityRecord{52c7ed5c u0 com.android.documentsui/.DocumentsActivity t11}
ACTIVITY MANAGER RUNNING PROCESSES (dumpsys activity processes)
User #0: mState=RUNNING
正如您所见,活动A仍在此处。是否可以清除后栈?
答案 0 :(得分:0)
尝试这样,
Intent intent = new Intent(this, NewActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
finish();//you want to close your activity,just call finish
答案 1 :(得分:0)
试试这个
Intent intent = new Intent(this, ActivityA.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | IntentCompat.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
此处IntentCompat
在Android支持库中添加了该类。
答案 2 :(得分:0)
如果按活动B中的后退,则永远不会导航回活动A,您可以在AndroidManifest.xml中设置它
<activity
android:name=".A"
android:noHistory="true">
</activity>