星期日, 10月 30, 2011

Activity (六)

Android應用程式學習筆記

Saving activity state

介紹Managing the Activity Lifecycle簡單地提到在activity被暫停或是停止,狀態是可以被保留的。這是真的,因為在暫停或停止時,Activity物件仍保留在記憶體中-所有有關的資訊及目前狀態仍是活的。因此用戶在activity上產生的任何改變都會保留在記憶體中,以便當activity回到前台,這些改變仍能存在。

然而當系統為了恢復記憶體而銷毀activity,Activity物件就會被銷毀,所以無法輕易以它完整無缺的狀態恢復activity。代替的方法就是,如果用戶操作回到activity,系統必須再次建立Activity物件。到目前為止,用戶不會察覺系統銷毀activity並重新建立activity,因此期望activity能精確地回到之前的狀態。在此情況下,你能擔保有關activity狀態的重要資訊被保存下來,藉著實現額外的回調方法來保存有關你的activity狀態的資訊然後在系統重新建立activity時恢復。

保存與目前activity狀態有關的資訊的回調方法為onSaveInstanceState()方法,系統呼叫此方法之前,使activity容易銷毀,並傳入Bundle物件。Bundle物件是你保存與activity有關的狀態資訊的地方,比如鍵值對,利用一些方法將值放入Bundle物件,比如putString()。然後,如果系統殺掉你的activity後用戶操作回到你的activity,系統將Bundle物件傳到onCreate()方法,所以你可以恢復到在onInstanceState()方法中保存的activity狀態。如果沒有任何資訊需要恢復,Bundle傳入onCreate()方法為null。


沒有留言:

張貼留言