我注意到,當android操作系統關閉不在活動堆棧頂部的活動時,我的一些靜態變量變爲null。我絕對相信,變量指向之前的對象,並且我沒有自己改變它們的價值。Android應用程序中的系統可以禁用靜態變量值嗎?
活動重新創建後,我得到nullPointerException會導致我的一個靜態變量(在Application的子類onCreate中初始化,並且應該在流程生命週期的任何時間不爲null)爲null。
因爲它不是我誰沒有變量,我想它是android操作系統,由於缺乏內存關閉後臺活動和空值靜態變量。 這可能嗎?
我應該在哪裏保存這個靜態變量..共享首選項? – 2013-06-11 14:36:05
這取決於。如果這些是簡單變量,那麼您可以將它們保存在共享首選項中。如果它們更復雜,可以將它們序列化爲一個文件或將它們存儲在SQLite數據庫中。另一種選擇是將它們保存到'onSavedInstanceState()'中的Bundle中,當你的活動被重新創建時,你可以檢查靜態變量是否爲空,如果是,你可以從保存的實例狀態中恢復它們。 – 2013-06-11 15:18:26
其他選項。懶加載他們。注意線程(即將方法同步到「getInstance」),或將它們放入自定義應用程序對象(或將它們加載到那裏)。你不知道什麼Activity會開始,但是應用程序中的Create會被調用。 http://developer.android.com/reference/android/app/Application.html#onCreate()這裏不要做I/O,順便說一句。 – 2013-07-04 05:41:24