2011-02-02 243 views
1

我目前正在處理應具有以下行爲的應用程序: 在其中一項活動中,用戶可以將不同的項目選擇到列表中。在這樣做的時候,他應該能夠拍照,保存並返回到之前的活動。Android - 在開始新活動時保存活動狀態

我遇到以下問題:當用戶在拍攝照片後返回到活動狀態時,進度(基本上選定的項目)將丟失。我試圖在我的活動上使用android:launchMode =「singleInstance」(以及singleTask)和android:alwaysRetainTaskState =「true」來保存它的當前狀態(並且在用戶離開應用程序時它工作得很好別的什麼,然後再回來)。我嘗試用FLAG_ACTIVITY_NEW_TASK來模擬ACTION_IMAGE_CAPTURE意圖來模擬相同的行爲(我腦海中的某處我認爲它應該和主屏幕上的圖片活動一樣),但是沒有效果。我甚至試圖用startActivityforResult嘗試用圖片活動進行午餐,希望以某種方式我的活動不會丟失,但仍然沒有效果。

我知道我可以使用Bundle savedInstanceState手動保存和恢復狀態,方法是在Create(etc)上重寫onPause,onResume,但實際上有很多自定義組件中的數據不易於序列化,我喜歡避免這種情況。

嗯,我想我的問題是我如何重現與alwaysRetainTaskState清單屬性相同的行爲?或者無論如何輕鬆保存我的活動狀態?或者我做錯了什麼,錯過了明顯的?

非常感謝!

回答

4

我知道我可以使用捆綁savedInstanceState手動保存,並通過覆蓋在onPause,的onResume恢復狀態,上創建(等),但實際上很多在那些不容易序列化的自定義組件的數據,所以我想避免這種情況。

你會「喜歡」什麼並不重要。無論如何您都需要此代碼來處理配置更改(例如,從縱向切換到橫向)。請執行onSaveInstanceState()onRestoreInstanceState(),然後退出上一段中所有其他不合適的黑客行爲(例如,singleInstancealwaysRetainTaskState)。

+0

很明顯,我喜歡的是應用程序命令所規定的。關於那些「不恰當」的黑客,也許我錯過了這一點,但他們爲什麼會不適應?他們喜歡要避免的事情嗎?看起來對我來說很整潔,但是,再一次,也許我想念一些信息。如果當我回到主屏幕並再次訪問應用程序時,如果我能從他們那裏得到所需的行爲,如果我從我的活動中啓動應用程序,認爲我能找到同樣的東西真的很糟糕嗎? – Ours 2011-02-02 13:08:33