[Android Training视频系列]2.4 Recreating an Activity
生活随笔
收集整理的這篇文章主要介紹了
[Android Training视频系列]2.4 Recreating an Activity
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
[Android Training視頻系列]2.4 Recreating an Activity
當你的activity開始停止,系統就調用onSaveInstanceState(),你可以在這個函數中使用key-value對的集合保存信息。默認函數實現了保存activity的view狀態,比如EditText的文本,或者ListView的滾動條位置。 為了保存附加信息,你必須實現onSaveInstanceState()方法,添加key-value對到Bundle對象中,例如:static?final?String?STATE_SCORE?=?"playerScore";?? static?final?String?STATE_LEVEL?=?"playerLevel";?? ...?? ?? @Override?? public?void?onSaveInstanceState(Bundle?savedInstanceState)?{?? ????//?保存用戶當前游戲狀態?? ????savedInstanceState.putInt(STATE_SCORE,?mCurrentScore);?? ????savedInstanceState.putInt(STATE_LEVEL,?mCurrentLevel);?? ?????? ????//?通常調用父類,讓他能保存View的信息。?? ????super.onSaveInstanceState(savedInstanceState);?? }??
警告:通常需要在onSaveInstanceState()實現中調用它的父類方法,以便能夠實現保存view的信息。 恢復你的activity狀態
如果你的activity在它被銷毀后重啟,你可以從系統傳遞給你的Bundle中恢復保存的狀態,onCreate()和onRestoreInstanceState()都可以接受到相同的包含實例狀態信息的Bundle。 因為onCreate()函數在系統創建一個新的activity實例或者重新創建前一個activity時都會調用,所以你必須在讀取Bundle前檢查它是否為空,如果是空的,那么系統是創建一個新的實例,如果不是,那么就恢復前一個被銷毀的activity。 例如,這里是onCreate()方法中實現恢復數據:@Override?? protected?void?onCreate(Bundle?savedInstanceState)?{?? ????super.onCreate(savedInstanceState);?//?Always?call?the?superclass?first?? ????? ????//?檢查是否是一個前面銷毀的activity實例。?? ????if?(savedInstanceState?!=?null)?{?? ????????//?恢復玩家狀態?? ????????mCurrentScore?=?savedInstanceState.getInt(STATE_SCORE);?? ????????mCurrentLevel?=?savedInstanceState.getInt(STATE_LEVEL);?? ????}?else?{?? ????????//?為新實例初始化一個默認值?? ????}?? ????...?? }??
你也可以選擇在onRestoreInstranceState()方法中實現,當系統調用完onStart()函數后會調用onRestoreInstranceState(),不過僅僅是當有狀態需要恢復時才會調用,所以你不需要檢查Bundle是否為空:public?void?onRestoreInstanceState(Bundle?savedInstanceState)?{?? ????//?調用父類恢復默認的View的狀態?? ????super.onRestoreInstanceState(savedInstanceState);?? ????? ????//?恢復玩家狀態?? ????mCurrentScore?=?savedInstanceState.getInt(STATE_SCORE);?? ????mCurrentLevel?=?savedInstanceState.getInt(STATE_LEVEL);?? }??
警告:通常需要調用onRestoreInstanceState()的父類方法,以便能恢復默認的視圖狀態。 學習更多在運行中重建activity(比如屏幕旋轉)的知識,可以看這里:Handling Runtime Changes.
1.主要內容
本講講解onSaveInstanceState與onRestoreInstanceState的使用。
2.視頻講解
http://www.eyeandroid.com/thread-11391-1-1.html
3.翻譯參考
存在一些情況,由于普通的程序行為,你的activity會被銷毀,比如,當用戶點擊Back按鈕,或者自己調用finish()方法。另外,如果activity被停止了并且很久沒被使用,或者前臺的系統需要更多的資源,系統也可能會銷毀你的activity。
當你的activity開始停止,系統就調用onSaveInstanceState(),你可以在這個函數中使用key-value對的集合保存信息。默認函數實現了保存activity的view狀態,比如EditText的文本,或者ListView的滾動條位置。 為了保存附加信息,你必須實現onSaveInstanceState()方法,添加key-value對到Bundle對象中,例如:
警告:通常需要在onSaveInstanceState()實現中調用它的父類方法,以便能夠實現保存view的信息。 恢復你的activity狀態
如果你的activity在它被銷毀后重啟,你可以從系統傳遞給你的Bundle中恢復保存的狀態,onCreate()和onRestoreInstanceState()都可以接受到相同的包含實例狀態信息的Bundle。 因為onCreate()函數在系統創建一個新的activity實例或者重新創建前一個activity時都會調用,所以你必須在讀取Bundle前檢查它是否為空,如果是空的,那么系統是創建一個新的實例,如果不是,那么就恢復前一個被銷毀的activity。 例如,這里是onCreate()方法中實現恢復數據:
你也可以選擇在onRestoreInstranceState()方法中實現,當系統調用完onStart()函數后會調用onRestoreInstranceState(),不過僅僅是當有狀態需要恢復時才會調用,所以你不需要檢查Bundle是否為空:
警告:通常需要調用onRestoreInstanceState()的父類方法,以便能恢復默認的視圖狀態。 學習更多在運行中重建activity(比如屏幕旋轉)的知識,可以看這里:Handling Runtime Changes.
轉載于:https://www.cnblogs.com/eyeandroid/archive/2012/12/18/2822568.html
總結
以上是生活随笔為你收集整理的[Android Training视频系列]2.4 Recreating an Activity的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 谢益辉 Rer
- 下一篇: linux 配置 clang++ SD