我有4個不同的活動,並通過鏈接創建了一個樣本。在Android中處理Activity Stack,我用我的方法泄漏內存嗎?
Objective:
Activities A,B,C,D;
A -> B -> C -> D
在d事件導致C
和D
彈出堆棧離開A and B
。
D中的事件可能導致B
C
和D
到POP,只留下A
堆棧。
Implementation:
我用下面的事件對我的前三項活動設立即A B C
if(v==buttonNext){
Intent secondAct=new Intent(FirstActivity.this, SecondActivity.class);
//storing the Stack
MaintainMyStack.addBackActivity(this);
startActivity(secondAct);
}
我用下面的事件對我的第四法案。即D
if(v==btnBack){
finish();//finishes "D"
Activity act=MaintainMyStack.getBackActivity();
act.finish(); //finishes last in stack i.e. "C"
}
我用這個通用類當中我A B C D
活動。
public class MaintainMyStack {
private static Stack<Activity> classes = new Stack<Activity>();
public static Activity getBackActivity() {
return classes.pop();
}
public static void addBackActivity(Activity c) {
classes.push(c);
}
}
它可以根據需要,但我只是關心MaintainMyStack
類時,它符合實際之情況可能會泄漏內存,請建議我應該去這種方法還是我們有其他選擇,以實現相同。 我如何創建MaintainMyStack
只有一個實例沒有泄漏任何內存
是的Ovidiu,我理解這種方法,它似乎與我目前的要求完美地工作,只是一個更多的查詢與你的方法,它是否再次調用整個活動(創建一個新的)還是它是同一活動從顯示堆棧? – 2012-03-13 11:23:56
因爲我相信你的方法不會保存初始化的值,並且會重新初始化,因爲它會調用'onCreate()' – 2012-03-13 11:28:43
將A和B設置爲singleTask,因此不會重新初始化A和B再次,他們的onNewIntent()將被稱爲 – chengbo 2012-03-13 11:44:45