0

我想在應用程序的所有活動中爲操作保留一些內存對象,並且我還希望在應用程序關閉時存儲這些對象。哪種做法最有效?我能想到的一些可能性是:在Android中處理對象

1)在所有活動中保留對象的本地副本,將它們序列化並通過意圖傳遞它們。 2)在所有活動中保留對象的本地副本,將它們序列化,分別在活動恢復和暫停時進行文件讀寫。

3)讓他們成爲靜態變量,但我不知道在這種情況下何時做文件讀/寫操作?這種方法可能會泄漏內存。

4)使用應用程序對象並將我的對象定義爲該對象中的變量。由於它具有活動的確定生命週期,因此我可以相應地進行讀/寫。

回答

2

我推薦你的方法編號2.原因是沒有「應用程序關閉」這樣的事情。 Android試圖將其保存在內存中,直到需要內存用於其他目的。你的應用程序的過程然後簡單地被殺死,你沒有得到任何回調。

如果仔細加載並存儲它們,可以使用單例或Application對象來緩存對象。但是,這也意味着,只有當應用程序進程終止時,纔會回收用於它們的內存。

+0

同意,第二種方式是最好的,唯一正確的。 – Evos

+0

Henry和@Evos:請看第四個選項,我剛加入 – Atinder

+1

,注意'onTerminate'不會在生產型Android設備上調用。所以沒有方便的地方來存儲對象。 – Henry

0

這取決於您的數據。在某些情況下,所有的方法都很好。

我覺得你有2種選擇:

  • 將數據保存在sqlite的。文件更簡單,速度更快。當活動開始從數據庫請求所需數據並顯示它時。 (如果你真的想使用文件)
  • 創建一個singletone類來存儲數據。數據將被加載到內存中,您可以非常快速地訪問它。當數據更改保存到sqlite或文件。谷歌「活動之間共享數據」
+0

請看第四個選項我剛加了 – Atinder

+0

你的第四個選項就像我的第二個 你可以擴展應用程序類並添加需要的數據管理功能。你可以從任何活動中使用它們。谷歌有很多例子。 – Leonidos