2014-01-17 23 views
2

這個問題可能看起來太常見了,我查了很多帖子在SO和其他網站,但我沒有得到任何正確的答案,我實際上搜索如何在android中保存經常使用的數據?

什麼是最好的方式來保存經常使用的數據?

這裏的「常用數據」是指所有那些不值得保存在數據庫或共享偏好中的數據,也不是每次都可以提取,例如設備的高度和寬度,數據庫路徑,數據庫命名

我通常這些數據保存在一個單獨的班級,所有的變量一般都是靜態的。 我在應用程序啓動時或在基本活動中獲取此數據,並在需要時使用它,可能在活動中,適配器中或任何分析器類中等。

大家都知道靜態數據被清除時,手機需要更多的內存,但即使我保存在共享偏好的所有數據也是如此,我不能得到共享的喜好,或數據庫的每一個我需要的數據的時間範圍內。而且這些變量必須從任何類中訪問。

在我的應用程序,我的名字這個類作爲AppConstant,和我所有的數據被保存在這個類中的靜態變量,但是所有的數據已被清除了,如果我打開其他應用5-6。

因此,當我再次打開我的應用程序時,再次在o​​nCreate()中創建視圖,現在我正在檢查活動,如果我的AppConstant中所需的數據被清除或不清除,來自共享偏好。

但我希望有一個更好的選擇。有沒有? 請幫我一把。

謝謝

+0

您會對https://github.com/JakeWharton/DiskLruCache –

回答

0

首先,操作系統在內存不足時「清除」靜態數據。這似乎是這樣做的,但事實並非如此。例如,如果您使用單例類,它將保持不變。發生什麼事是操作系統正在殺死你的應用程序來釋放內存。重新啓動後(假設它在大約30分鐘內發生),操作系統將恢復到死亡之前的狀態。從本質上講,它會重新啓動應用程序進入後臺時可見的活動。如您所知,活動可能會被殺死並輕鬆重啓(例如,當您旋轉設備時會發生)。但是,如果您在應用程序的第一個活動中創建了單例,那麼當操作系統重新啓動您的應用程序時,它將不會存在 - 所以看起來OS已經「清除」了單例中的數據。

你檢查,如果靜態數據是有在的onCreate(的)解決方案,將工作,我相信這是唯一的解決辦法。

+0

感興趣如果我在基本活動中設置所有數據而不是在我的應用程序的第一個活動中,我的所有活動都從基本活動啓動,這會有幫助嗎?我到現在也沒嘗試仍然因爲那將是非常大的變化,所以只是問其是否值得.. – Ari

+0

如果初始化在BaseActivity課程的所有靜態數據(在OnCreate()例如法),和你檢查數據是否在執行前被初始化,它應該工作正常。 – Larry

相關問題