2010-09-24 56 views
0

我做了一個簡單的程序,重寫了每個生命週期方法,其中一切正常,除了onRestoreInstanceState(Bundle savedInstanceState)令人困惑的Android活動生命週期行爲

我推翻的方法

@Override 
    protected void onRestoreInstanceState(Bundle savedInstanceState) { 
    super.onRestoreInstanceState(savedInstanceState); 
    Toast.makeText(getBaseContext(), "onRestoreInstanceState - Activity1 ", Toast.LENGTH_SHORT).show(); 
    } 

但它永遠不會被調用。

我也覆蓋了onSaveInstanceState(Bundle outState),我可以看到系統調用它,但從來沒有onRestoreInstanceState(Bundle savedInstanceState)。當我按下後退按鈕時,我可以看到系統調用onRestore(),OnStart()onResume(),並且UI(僅兩個按鈕)顯示正確。

如何在不調用onRestoreInstanceState(Bundle savedInstanceState)的情況下恢復UI?我只做setContentView(R.layout.main)onCreate(savedInstanceState)。那麼如何在不調用onCreate()onRestoreInstanceState()的情況下恢復UI?

真的很感謝有人對此有所瞭解。

謝謝。

回答

0

這裏的文檔有點令人困惑,但我認爲這種方法只是作爲onCreate處理存儲狀態的一種替代方法,在週期後期發生。只有在活動被銷燬並重新創建狀態時纔會被調用;這通常會在方向更改期間發生。它並不打算在活動之間的平常過渡期間處理狀態。

另請參閱onSaveInstanceState() and onRestoreInstanceState()