如何清除Acrtivities的后栈(当前任务)

时间:2017-09-15 09:45:41

标签: android android-intent android-activity

我需要运行一个活动,但要清除所有后台堆栈,即使是我运行新活动的活动。

这是一个例子。

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仍在此处。是否可以清除后栈?

3 个答案:

答案 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>