搜尋此網誌

2013-10-25

Don’t Sotre Data in Application Object

作者:KH

在開發 Android App 的時候,儲存資料的方法有很多,像是SQlite、SharedPreferences……等等,但是如果只是一些暫時存放的東西,有的時候為了方便我們也許會寫一個class,將資料存進去。像是下面的例子:


假設有一個Activity A,我在這裡去存取上次 MyApplication object 下的資料:

接著在 GreetLoudlyActivity 被開啟時,在這裡的Activity resume 去存取 MyApplication object 的資料欄位:

目前看來似乎都沒有問題,也不會crash。

但是假設一下,user按了back key,然後一個小時後回到這個程式,要是這個app沒有被destroy,而是還留在背景,那會直接回到onResume的狀態,問題就來了!因為MyApplication並不會永遠存在記憶體中,android會把他kill,所以此時我們app.getName這邊會取得NULL 所以就Crash了!


結語:

1. 利用intent bundle去傳遞參數,而不要用object暫存(可以參考使用 LocalBroadcastManager
2. 永遠檢查是否有 null object 的產生,避免 NullPointerException
3. 用資料庫或其他方法儲存,不要貪圖簡單而讓自己的app有機率crash。

Reference:http://www.developerphil.com/dont-store-data-in-the-application-object/

沒有留言 :

張貼留言