2013-06-30 58 views
0

我有一個片段,它們將用戶數據保存在onSaveInstanceState方法中。 當用戶完成活動並將其顯示在下一個意圖中時,我需要獲取此數據。 目前我執行的順序是:片段的onSaveInstanceState後做工作

  1. 用戶點擊關閉按鈕
  2. 計算開始依靠儲存在的onSaveInstanceState的分組呼叫的數據,然後開始新的意圖
  3. 當前片段的onSaveInstanceState被調用,信息錯過在計算
  4. 新的活動顯示
  5. 老Activitys的onDestroy被稱爲

我想到了開始我的計算和onDestroy中的新活動。然後我需要一個機制來銷燬當前的活動。 或者我可以以某種方式在進行計算之前調用當前線程中所有剩下的onSaveInstanceState方法調用。 什麼會更好或有更好的方法?

回答

0

這聽起來像是一個奇怪的設計給我的android。對於這種使用情況下,我會做:

  1. 用戶按下abitratry按鈕(在你的情況下關閉)
  2. 點擊監聽器獲取需要的數據(以同樣的方式,你會得到他們的onSaveInstanceState)
  3. 啓動的AsyncTask如果過長的操作,並顯示進度條或作出UI線程計算,如果瑣碎
  4. 開始意圖與計算結果爲新的活動

我有一個Fragments,它將用戶數據保存在onSaveInstanceState方法中。當用戶完成活動並將其顯示在下一個意圖中時,我需要獲取這些數據。

是否有任何理由需要從onSaveInstanceState()方法特別的數據?

想到開始我的計算和onDestroy中的新活動。然後我需要一個機制來銷燬當前的活動。

如果您在onDestroy()中調用了某些東西,則無需強制銷燬活動,因爲它已在進行中。 (順便說一句,完成()會做到這一點)。從這個公寓,onDestroy應該做清理程序,例如免費資源或關閉流,而不是調用新的活動

+0

你實際存儲(我的意思是一個長期的過程)數據在你的數據庫或任何onSaveInstanceState()?我沒有得到你的意思是「關閉所有交互式UI元素的onClickListeners」? – for3st

+0

儲存不是一個漫長的過程。起初,我在每個交互式UI元素的onClickListeners中做了存儲。我需要存儲每個片段的用戶輸入,以便以後在另一個會話中進行檢索。如果應用程序進入後臺並且設備內存不足,則出現問題。這將刪除所有類的元素。 onSaveInstanceState和onCreate(SavedBundle)處理這個方便。 – user1324936

+0

嗯,如果你在向外包中添加東西,我明白了,但是這與計算用例有什麼關係,如果用戶按下一個按鈕並開始計算,那麼你的活動被破壞的機會是零如果它對用戶仍然可見,那麼它可以安全地從onclicklistener中的輸入字段中獲取數據(在這一點上是非常實用的方法) – for3st