我的应用场景如下所示:
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时,我可以使用哪些意图标志来清除堆栈,并仍然保持活动转换?
最佳答案
将您的代码更改为
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);
}
}
它应该可以解决您的问题。
关于android - 清除后堆栈,但保留过渡动画,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31004485/