[英]Android does not destroy data on back button
在onCreate()方法中,我加載了一個關卡列表。 它存儲在單例結構中(為此使用枚舉)。 當我按下“后退”按鈕並再次返回時,列表仍然存在,並且再次添加了所有級別。 我不明白為什么會這樣,因為活動生命周期指出該進程在再次調用onCreate()之前就被殺死了。
為什么會這樣呢?
編輯,一些代碼:
在單獨的文件中:
public enum GameInformation {
INSTANCE;
public List<Level> levelSet;
public void loadLevelSet(Context context) {
...
}
}
在主要活動中:
public void onCreate(Bundle savedInstanceState) {
GameInformation.INSTANCE.loadLevelSet(this);
}
我不明白為什么會這樣,因為活動生命周期指出該進程在再次調用onCreate()之前就被殺死了。
不,不是的。
通過返回按鈕銷毀您的上一個活動時,肯定不會立即終止該過程。 即使用戶沒有活動的組件,Android也會保持這一過程,以防用戶碰巧想要快速返回到應用程序。 稍后,當Android需要RAM時,它將終止該過程。
您不應該對靜態數據成員是否存在進行任何假設。 如果它們為null,則只需對其進行延遲初始化。
使用后退按鈕不會殺死該應用程序。 它僅將其設置為背景。 隨后,當應用程序被檢測為休眠狀態時,它實際上已被系統殺死。
因此,當您返回應用程序時,只需通過OnCreate()
方法重新加載您的級別。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.