2012-06-07 136 views
4

我正在創建一個android應用程序。它包含從服務器的下載過程。它運行良好,直到應用程序運行並保持數據沒有任何崩潰,但現在我堅持如下所述的問題應用程序在應用程序恢復很長時間後崩潰

當應用程序通過按下主頁按鈕最小化和很長時間後,當我打開應用程序應用程序中的所有數據都將被刪除。它給了我一個「空指針異常」;即使ArrayList的值被刪除,它給出一個0大小的數組列表。

我打開應用程序後最大化從主屏幕通過OnResume只,但它並沒有自己調用。

我不知道爲什麼會出現此問題。任何人都可以請建議我一個解決方案,並指出我做錯了什麼?

+0

你確定'initialization arraylist proper?'我的意思是當你回來它初始化arraylist? –

+0

@ SamirMangroliya是offcourse。如果我沒有初始化它會得到空指針異常,但爲arraylist其給予arrayindexoutofException .. – deepa

+0

你試圖獲得索引arraylist哪些更多或等同'arraylist.size()'.so檢查你的'(int i = 0;我

回答

2

是的,的確如此 - 正如@paradx所說 - 垃圾收集器在應用程序處於後臺時拋棄數據。最後,我找到了一個解決方案基於@paradx建議,因爲數據存儲在SQLite的或savedInstanceState

只需通過

intent.putExtra("static key","static value"); 

然後靜態HashMap中都寫在文件傳遞一些靜態值,並作爲以後檢索使用。現在,該應用程序不會因此問題而崩潰。

我已發佈此解決方案,以便有人可能會使用它。

+4

誰是悖論? –

0

您是否使用apache HTTP客戶端或UrlConnection?

Apache http client or URLConnection

也許錯誤地使用可能會導致這樣的NPE。 你能否也請發佈你的logCat輸出?

+0

下載沒有問題..它工作正常..在最大化應用程序本身崩潰..因爲它顯示在整個應用程序的價值保持被刪除。 – deepa

+0

也許你應該在單一服務中運行這些東西,以確保它不會在後臺被刪除。你能否提供logcat輸出? – Thkru

+0

在下載過程中是否將其最小化? –

0

我的猜測是,當你的應用程序在後臺時,垃圾回收器會拋棄你的數據。嘗試將數據保存到內置的SQLite數據庫或onSaveInstanceState()生命週期方法中的savedInstanceState包中,並將其加載回onRestoreInstanceState()方法。

+0

感謝您的快速回復。我會盡力去實現它.. – deepa