【发布时间】:2015-04-07 15:09:49
【问题描述】:
所以这是我的疑问所在的场景:我的应用程序类中有一个 Activity 的 Stack 对象,它将保存对我的应用程序中当前活动的所有活动的引用。所有活动都在其 onCreate() 处将自身推入堆栈,并在 onDestroy() 处将自身弹出。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
MyApplicationClass.stackOfActivity.add(this);
}
@Override
protected void onDestroy() {
super.onDestroy();
MyApplicationClass.stackOfActivity.pop();
}
在 MyApplicationClass(即扩展 Application 的类)中,我创建了一个方法来完成堆栈顶部的活动。
static public void popActivitiesFromStack(int amountOfActivitiesToBePopedOut){
if(stackOfActivity.size() >= amountOfActivitiesToBePopedOut){
for(int i = 0; i < amountOfActivitiesToBePopedOut; i++){
stackOfActivity.peek().finish();
}
}
}
问题在于“popActivitiesFromStack”的所有迭代都在任何 OnDestroy() 执行之前执行,并且在执行 FOR 时不会弹出任何活动,并且每次完成在 FOR 中调用的 () 调用会转到相同的活动。
所以我的问题是,为什么在这种情况下 onDestroy() 没有在 finish() 之后立即执行?
【问题讨论】:
标签: android android-activity stack ondestroy