我的应用场景如下所示:
MainActivity> TaskActivity> TaskActivity> TaskActivity> ...> MainActivity
每个TaskActivity
以前的活动不需要保留在后台。实际上我希望它们不被保留,因为可以启动许多活动(导致内存消耗问题=频繁的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时,我可以使用哪些意图标记清除堆栈,并且保持活动转换?
答案 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);
}
}
它应该解决你的问题。