2017-03-07 55 views
0

即使活動被完全摧毀,單身還會繼續存活嗎?我有一些引用的Android位置經理調用服務來做GPS的東西,它工作正常一兩個小時(即使應用程序最小化和屏幕關閉),但一段時間後更新將停止ping,我有查看了一些其他堆棧溢出線程,並且我看到了有關Singleton是保持活動還是會在系統需要內存時會被破壞的衝突響應。什麼時候Android Singleton被破壞?

如果一個單身人士不是長時間保持參考的好方法,那麼另一個選擇是什麼?

+0

這是一個單身人士。它的生命週期是過程之一 – Blackbelt

回答

1

單身人士的生活取決於你初始化它。您可以使用您的活動對其進行初始化,只要該活動存在,活動只會保持活動狀態。

爲了保持它的應用層面,實例化辛格爾頓與您Application Context代替Activity Context

UPDATE

另一種方法是使用SQLite數據庫(優先)或SharedPreferences(如果存儲拋出內存異常很多數據)。

如果您想在整個單次啓動過程中使用一些數據,那麼Singleton方法非常簡單方便。

+0

你可以簡單地擴展Singleton的Application類嗎?或者你必須創建一個應用程序類,然後把你的單身人士呢?我不使用數據庫的原因是因爲它存儲對不一定只有數據的類的引用。 – ashxu

+1

我創建一個Application類,將Singleton放入它並將此類添加到Manifest。完成工作:D –

+0

應用程序類數據仍將被銷燬的條件是什麼?只有當應用程序進程被銷燬?還是它可以被銷燬以釋放內存? – ashxu

0

每一個應用程序被啓動採空作爲一個OSGi容器, 當應用程序被啓動類似的東西,那麼靜態值被創建,當你調用的getInstance會發生同樣的,一旦app.onDestroy被稱爲所有內存被釋放,並因此出現了單人破壞...