2013-06-06 182 views
0

我面臨着一個問題,我的自定義類持有一些數據。這個班是單身人士,我有很多變數存在我的數據。Android數據丟失

但經過一段時間可能2或3我得到空變量沒有價值。

爲什麼會發生?

如果是由於android默認的內存管理那麼該怎麼過來這個問題呢?

我有很多後臺任務,這些任務取決於變量爲空時的單例變量,然後我的應用程序的所有功能都丟失了。

+6

因爲我們沒有克里斯塔爾球,我們需要編寫代碼。 – OcuS

+2

對於沒有任何丟失的數據使用共享的pref或sqlite,存儲在對象和類中的數據僅用於臨時使用,當用戶從任務管理器中終止應用程序時將被刪除,或者在特定條件下可能被操作系統強行關閉 –

+0

我正在工作如果應用程序處於空閒模式,則在5分鐘後啓動同步功能同步的應用程序中,我通過按Home鍵而不是後退鍵在後臺發送應用程序。應用程序在4小時後開始同步並下載數據,然後恢復應用程序,並且單身數組中沒有數據。 – farrukh

回答

4

的Android可以隨時殺死你的應用程序由於任何的下述原因: -

  1. 應用程序在後臺和Android運行所需前運行的應用程序一些內存。
  2. 一些任務殺手殺死了App。
  3. 您從管理應用程序屏幕中殺死了應用程序。
  4. Android OS關機或重新啓動。

我們解決這個問題,你可以用下面的辦法,最好的一個取決於您的需求: -

  1. 如果您singelton類有一些線程,你需要不斷磨合不是可以讓這個類一個Service和START_STICKY屬性你的應用程序將變得不太可能被Android殺死看到tutorial在這裏。
  2. 如果變量的數量有限制,您可以使用SharedPreferences並在應用程序的OnCreate()/ OnResume中可以獲取這些值,請參閱similar question
  3. 如果你有相當多的變量,這將是偉大的值存儲在一個XML file<variable name>value</variable name>和Android提供了一個很好的機制來讀/寫XML文件見example herethis詳細的教程。
  4. 您還可以將數據存儲在數據庫中,並在應用程序啓動時讀取該數據,以便查看此tutorial

這些方法不是相互排斥的,你可以使用它們的任意組合,在我的應用程序中我使用了前三個。不過,我也建議檢查你的應用程序的內存使用情況,以便我們可以知道這種行爲的確切原因。如果你的應用程序在用戶焦點(在前面運行)時被殺死,那麼它是令人擔憂的。爲了便於參考見下類似的問題,

Similar Question

Another Similar Question

Application Fundamentals