public static class GoBack {
public static Stack<Bundle> goBackStack;
}
在我的android應用程序中,我編寫了一個父類是Application的類,我聲明瞭一個內部類作爲上面的代碼。android os確定調用gc的策略是什麼?
我的問題是,在我的應用程序運行在backgroud很長時間後,然後回到應用程序,goBackStack始終爲空。我不知道爲什麼?我該如何避免它?
public static class GoBack {
public static Stack<Bundle> goBackStack;
}
在我的android應用程序中,我編寫了一個父類是Application的類,我聲明瞭一個內部類作爲上面的代碼。android os確定調用gc的策略是什麼?
我的問題是,在我的應用程序運行在backgroud很長時間後,然後回到應用程序,goBackStack始終爲空。我不知道爲什麼?我該如何避免它?
問題是,你的整個過程最終被殺死。垃圾收集器不會收集靜態引用的對象。
重新初始化您的數據或使用onSavedInstanceState
。或者,你可以看看使用數據庫或SharedPreferences
來堅持數據。
由於整個應用程序被殺死。那麼如何調用onSavedInstanceState函數呢? – ArronXY 2013-09-27 13:55:29
您的goBackStack
儘快變爲null,因爲Android決定終止您的應用程序。由於此變量在其他位置初始化,因此在重新啓動應用程序後它仍然爲空(因爲它未在第二次初始化)。
解決方案很簡單 - 不要考慮靜態變量,因爲它們是持久性存儲。他們不是。改爲使用SharedPreferences
,SQLite
數據庫或文件系統。
感謝您的諮詢。我使用它檢查它是否爲空來處理它。如果爲null,那麼我將再次初始化它。 – ArronXY 2013-09-27 13:48:20
只是不開發應用程序,直到你閱讀基礎知識,並且問題將消失:) – 2012-08-14 12:45:13
goBackStack是公開可用的。檢查任何它沒有被修改爲null – 2012-08-14 12:45:23
我確信goBackStack沒有被修改爲null。 – ArronXY 2012-08-14 12:47:21