簡體   English   中英

Android不會銷毀后退按鈕上的數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM