展示瞭Activity被中止時是怎麼樣保存狀態的。先瞭解幾點知識:
本例通過onSaveInstanceState()來保存UI狀態,onRestoreInstanceState()恢復UI狀態。這個是Activity默認實現的,不需要我們調用。
onSaveInstanceState()不是Activity生命周期的一部分,在用戶明確退出Activity的時候不會執行,比如按Back鍵。
關鍵代碼:
<EditText android:id="@+id/saved"
android:layout_width="match_parent" android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/green"
android:text="@string/initial_text"
android:freezesText="true">
<requestFocus />
</EditText>
<EditText
android:layout_width="match_parent" android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/red"
android:text="@string/initial_text">
</EditText>
一個定義瞭id,一個沒定義,Activity默認隻對定義瞭id的元素保存和恢復狀態。
android:freezesText為true是為瞭保存當前文本內容和光標位置。
<requestFocus />獲得焦點。
旋轉屏幕(模擬器下按Ctrl+F11)後的效果:
摘自 小何才露尖尖角