星期日, 10月 30, 2011

Activity (七)

Android應用程式學習筆記

接著Activity (六)的內容繼續學習。

然而,即使你沒做甚麼和沒有實現onSaveInstanceState()方法,Activity類預設實現onSaveInstanceState()方法還保存一些activity狀態。特別的是,預設會為布局的每個視圖呼叫onSaveInstanceState()方法,允許每個視圖提供應該被儲存的資訊,在Android架構下幾乎每個部件都會實現這個方法,這樣當你的activity再次建立時,在使用者介面上的任何可見的改變都可以自動保留儲存起來。比如,EditText部件會保存用戶輸入的文字,CheckBox部件保存用戶是否check。這些只會在當你提供你想保存狀態的部件的ID(android:id屬性)才有作用,如果部件沒有ID,就無法保存狀態。

雖然預設會執行onSaveInstanceState()方法來保存與activity的使用者介面有關的有用資訊,你仍可能需要複寫onSaveInstanceState()方法來保存額外資訊。比如,你可能需要保存在activity的生命中改變的變數值。

因為預設實現的onSaveIntanceState()方法幫助儲存使用者介面的狀態,如果你複寫此方法來保存額外資訊,你應該在執行任何工作之前呼叫superclass實現onSaveInstanceState()

測試你的應用程式有能力保存狀態的做簡單方法就是轉動裝置,讓屏幕方向改變。當屏幕方向改變,系統為了恢復資源銷毀又在建立activity可能利用為新的方向,單獨為此理由,你的activity能保存轉動屏幕的狀態是重要的,這樣用戶就不會經常在使用應用程式時還要轉動屏幕。

以下圖示,左邊顯示當activity被停止然後恢復,activity的狀態保持原封不動。右邊顯示當activity被銷毀然後再次建立,activity必須保存先前的activity狀態。


沒有留言:

張貼留言