清除后台堆栈但保留过渡动画

时间:2015-06-23 13:44:09

标签: android android-intent

我的应用场景如下所示:

MainActivity> TaskActivity> TaskActivity> TaskActivity> ...> MainActivity

每个TaskActivity

  • 根据用户内容启动下一个
  • 可以返回MainActivity

以前的活动需要保留在后台。实际上我希望它们不被保留,因为可以启动许多活动(导致内存消耗问题=频繁的OutOfMemory异常)并且我不允许用户返回之前的活动。

这是我的TaskActivity:

public class TaskActivity extends FragmentActivity {

    private void launchNextTask(Task nextTask) {
        Intent intent = new Intent(TaskActivity.this, TaskActivity.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
        intent.putExtra(TASK_KEY, nextTask);
        startActivity(intent);
    }

}

我的所有活动都有过渡动画:

overridePendingTransition(R.anim.slide_in, R.anim.slide_out);

在我在意图中添加 NEW_TASK CLEAR_TASK 标志之前,它工作正常。

所以这段代码运行正常,每次启动TaskActivity时都可以看到GC释放内存,除了活动转换不再有效。

问题:每次启动TaskActivity时,我可以使用哪些意图标记清除堆栈,并且保持活动转换

1 个答案:

答案 0 :(得分:0)

将您的代码更改为

public class TaskActivity extends FragmentActivity {

    private void launchNextTask(Task nextTask) {
        Intent intent = new Intent(TaskActivity.this, TaskActivity.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
        intent.putExtra(TASK_KEY, nextTask);
        startActivity(intent);
        overridePendingTransition(R.anim.slide_in, R.anim.slide_out);
    }
}

它应该解决你的问题。