2014-09-25 48 views
0

版本的Android方案這是怎麼我安排我的數據:這讓我爲難,

  • 我創建了一個應用程序類在我的Android項目
  • 應用程序類我有一個ArrayList對象
  • 在其他活動我叫應用類的一些方法,返回給我的上述名單

現在讓我爲難的情景的一部分: 在一定ACTIV兩者均如果按下按鈕

  1. 我檢查是否有互聯網連接
  2. 如果沒有一個我開始的意向來打開設置爲用戶啓用移動網絡或WiFi

當它返回雖然它看起來應用程序被破壞,因爲onCreate被再次調用,但在那個時候我的應用程序類中的arrayList是這個時間爲null。所以我的問題是

  • 爲什麼我的活動被摧毀,而不是隻是暫停?
  • 如果它被破壞,爲什麼我的應用程序不會從一開始就自行啓動,但它僅從啓動Activity Action.Settings的Activity啓動?
  • 如果只有最新的Activity被銷燬而不是整個應用程序,那麼Application中的數據如何丟失?

這是我是如何聲明的對象的ArrayList在我的應用程序類

 private static ArrayList<PointOfInterest> pois; 

編輯:我把一的onDestroy Log.i()()活動,這是從未打印過。但是,當我從Settings中返回時,onCreate()被調用(沒有調用onDestroy),那怎麼可能?

+0

'爲什麼我的活動破壞,不只是暫停?'因爲OS決定終止該應用(缺乏resouces,PMS等......,不要理會爲什麼)...'如果它被破壞了爲什麼我的應用程序不會......「因爲系統是」記住「你在你的應用程序中使用的最後一個活動,並返回到它'如果只有最新的活動被銷燬,而不是整個應用程序......'你是正確的關於它...結論:整個應用程序被殺害... – Selvin 2014-09-25 13:14:34

+0

@Selvin爲什麼評論,不只是回答它?儘管非常感謝你,但我還是讓你知道了嗎? – Libathos 2014-09-25 13:19:06

回答

1

當應用程序在後臺時,靜態字段可以被os取消。 所以他們應該永遠恢復。

see this post

+0

not nullified ...簡單地創建應用程序類的新實例,因爲舊的一個被OS所殺...問題是,他沒有設置這些字段onCreate應用程序,但在一些活動中...應該沒有問題如果只有一個活動...但是如果在ActivityA中他設置了這些值,並且ActivityB位於堆棧頂部並且應用程序被終止,並且他返回到ActivityB,則ActivityA中的代碼永遠不會被調用。 – Selvin 2014-09-25 13:05:53

+0

@Selvin Ok但是我不要以爲我可以覆蓋應用程序類 – Libathos 2014-09-25 13:12:02

+0

中的onSavedInstanceState()否...使用一些持久存儲來保存數據(SharedPreferences/database) – Selvin 2014-09-25 13:13:23