我有一個應用程序在遍歷文件系統時創建多個活動(每個文件夾或文件一個活動,一個搜索活動等)。此應用程序有時會在[返回]時崩潰。跟蹤日誌表明它在onCreate(...)中崩潰,這告訴我這些活動已經被銷燬,並且在返回時正在被重新創建。這是一個問題,因爲當在活動堆棧中向前移動時(即正常文件夾遍歷),我通過Intent傳遞數據。Android - 多項活動,讓他們活着,並保存狀態?
這裏是我所得到的:
ERROR/AndroidRuntime(978):產生的原因: 顯示java.lang.NullPointerException Folder.onCreate(Folder.java:155)
ERROR/AndroidRuntime (978):在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049) ERROR/AndroidRuntime(978):在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)...
在像文件系統瀏覽器一樣運行的應用程序中,處理內存,多次(甚至可能是0-100次)活動,返回等等的最佳方式是什麼?
謝謝。
編輯:我想繼續使用活動,如果可能的話,或找到一種方法來保持從一個活動到另一個活動的外觀和感覺。如果我能夠就如何最大限度地減少活動數量(例如,保存數據,關閉屏幕外活動,然後保留[後面]動畫,即使被重新調用的活動需要重建)。謝謝。
感謝您的支持,但是我的應用程序有點複雜,目錄信息是從基於雲的服務加載的,文件需要打開/顯示,用戶需要能夠搜索文件等。應用程序現在可以完成所有這些工作,但每個操作都是它自己的活動,並且活動會相互傳遞數據......因此,當關閉時會出現空指針。我可以使用viewflipper或類似的東西,同時保持活動 - 活動動畫等?謝謝。 – RyanM 2011-04-01 00:14:47
我仍然會避免使用那麼多的活動。您可以將您的應用分爲三個組件,目錄瀏覽器,文件查看器和搜索。每個組件只需要一個實例,您可以通過在Intents中設置的「FLAG_ACTIVITY_CLEAR_TOP」和「FLAG_ACTIVITY_SINGLE_TOP」來實現。 – smith324 2011-04-01 02:33:10
感謝您的支持,但我想保留活動過渡動畫,所以我會繼續使用活動。即使有很多開放的活動,我從來沒有看到該應用使用超過14MB的RAM,並且SoftReference使用了所有的位圖/繪圖,所以我沒有發現內存不足的錯誤。 – RyanM 2011-04-03 04:30:04