2013-03-18 213 views
1

我剛剛注意到,android會假裝通過在之前的活動中重新啓動您,在後臺將其殺死後重新啓動應用程序。android - 在非主要活動中處理應用程序啓動

1)我可以禁用此功能嗎?

我的問題在於我的ListsActivity。它傳遞一個列表數組,其中包含要顯示給用戶的項目。有些是文件夾 - 選中時,我打開另一個包含該文件夾內容的數組的ListActivity。例如,如果用戶決定搜索特定文件夾及其子文件夾中的所有項目,則可以動態生成列表。

如果我的應用程序在我的ListsActivity重新啓動,我不知道我沒有該列表數組。

2)我該怎麼辦?我不想每次調用onPause時都堅持數組。該數組在樹的頂部可能很大。更不用說後面歷史中的所有ListsActivities。

3)如果我發現我沒有我的列表數組,可以無縫地從ListsActivity onCreate重新啓動應用程序嗎?我的意思是不顯示The ListsActivity然後閃爍到主要活動。

編輯 - 請注意,這涉及遞歸,因爲用戶可以在任何時間點在歷史中有任何數量的活動。所以我有另一個問題:

4)如果以這種方式重新啓動 - 當我回擊時,我有完整的歷史記錄?這些活動中的每一個都必須重新創建嗎?我打開另一個問題,問這裏測試如何:How to test your app being killed and restarted?

+0

你是什麼意思「android假裝在殺死...後恢復你的應用程序」?你在說要按「主頁」按鈕嗎?唯一的問題是你不知道你在哪個目錄?我想我對實際問題是什麼感到困惑? – codeMagic 2013-03-18 22:33:47

+0

當你的應用程序在後臺android可以殺死它,然後通過重新創建應用程序來「恢復」它,但在他停止的活動中啓動用戶。 – Mark 2013-03-18 22:36:33

+0

因此,例如我有一個2兆字節的樹在內存中包含文件夾。我有一個活動顯示每個文件夾,並將指向該活動的文件夾傳遞給該活動。爲了在應用程序被終止後支持恢復,此文件夾必須將整個樹保存在磁盤下面。 – Mark 2013-03-18 22:38:50

回答

0

你可以調用onPause完成(),當再次啓動你的應用程序被重置。或者你可以重寫方法onSaveInstanceState和OnRestoreInstanceState。

+0

onSaveInstanceState和onPause在正常的活動中都會被調用,所以我真的不想無緣無故地寫文件。 – Mark 2013-03-18 22:11:38

相關問題