2017-09-03 99 views
0

這是對這個問題的後續問題:Android的背部壓先前的活動重新啓動,而不是恢復

How to resume activity instead of restart when going "up" from action bar

我得到了2個活動,都在清單中定義與android:launchMode="singleTop"

活動A調用活動B.活動B有一個後退按鈕:

backButton.setOnClickListener(new View.OnClickListener() 
    { 
     @Override 
     public void onClick(View view) 
     { 
      finish(); 
     } 
    }); 

在一些設備上是沒有問題的和先前的活動恢復。其他設備正在重新啓動之前的活動,而不是恢復它。這是爲什麼?

回答

0

這可能是因爲在某些設備上,您的活動正在垃圾收集以節省內存。如果你想繼續而不是重新啓動,即使在android中殺死你的活動覆蓋onSaveInstanceState方法,並保存你的所有變量。

現在當你回到你的活動中時,如果它被殺死了,那麼在創建一個包時會傳遞一個名爲savedINstanceState的對象。如果savedInstanceState不爲null,則使用其中的數據將您的活動恢復到之前的狀態。

更多的細節在這裏:How to use onSaveInstanceState() and onRestoreInstanceState()?

+0

我可以保存狀態的片段,並在其活動的恢復? –

+0

查看此問題的接受答案:https://stackoverflow.com/questions/15313598/once-for-all-how-to-correctly-save-instance-state-of-fragments-in-back-stack –

+0

問題是我並不需要恢復狀態,而是恢復堆棧。當用戶在第二個活動中按下後退按鈕時,是在第一個活動的堆棧中有大約3個片段之後。當活動B完成並且A重新啓動時,我失去了堆棧,我需要返回到前一個片段,但是也按照它們的順序將堆棧中的其他片段放入..我該怎麼做? –

相關問題