2012-11-07 149 views
0

你能幫我解決我的問題嗎?onActivityResult死亡活動

我有Activity1,Activity2。 活動1在onCreate()創建用戶界面,然後在某個時刻用戶與startActivityForResult()

啓動活性2似乎出內存不足的情況非常少見,但我遇到過一次,所以我想,以防止它將來。我甚至可以通過運行一些「硬」應用程序或遊戲來重複這種情況。結果是 - 當我返回到我的應用程序Activity2被重新創建。然後當我回到Activity1時按下Back按鈕,它也被重新創建。我在這裏有邏輯碰撞。 Activity1 UI在onCreate中從零開始創建,同時在onActivityResult中更新!

我該如何解決這個問題?在onCreate上觸發一些標誌並在onActivityResult中檢查它?這適用於我,但我認爲它不是它應該的。

我的手機有股票ROM的Android 2.3.5

UPDATE:好,具體的問題,我有元素的列表。它建於onCreate()。留給Activity2我需要記住被點擊元素的id,以便稍後在onActivityResult()中更新它。在onSaveInstanceState()中捆綁保存並不是問題。但!從onCreate()的套裝中獲取它是個壞主意,因爲我沒有更新!在這裏要說明的是僞代碼:

onCreate() 
{ 
    elementId = getIdFromBundle(); 
    if (elementId == null) 
     createNewListFromZero(); 
} 

onSaveInstanceState() 
{ 
    putIdToBundle(elementId); 
} 

onActivityResult() 
{ 
    updateOnlyOneListElement(elementId); 
} 

所以我不能通過它的id更新元素,因爲活動實際上被系統破壞了。我需要重建它。我已連續致電onCreate(), onActivityResult()。問題是我應該如何共享這兩種方法之間的邏輯來創建\以正確的順序更新我的元素列表?

+0

你找到任何解決方案?我面臨同樣的問題! – AndiGeeky

回答

0

你應該看看在onSaveInstanceState中保存活動狀態。當活動重新啓動時,捆綁的這些將在onCreate中返回。 在活動的整個生命週期看看

http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle

活動javadoc類別:

注意,在上表中「Killable」列 - 對於那些被標記爲killable方法,在該方法返回後,系統可以隨時終止主持該活動的進程,而無需執行另一行代碼。因此,您應該使用onPause()方法將任何持久性數據(如用戶編輯)寫入存儲。

In addition, the method onSaveInstanceState(Bundle) is called before placing the activity in such a background state, allowing you to save away any dynamic instance state in your activity into the given Bundle, to be later received in onCreate(Bundle) if the activity needs to be re-created

+0

我用更多的信息更新了我的問題 – AHTOH