隨筆 - 35  文章 - 21  trackbacks - 0
          <2011年9月>
          28293031123
          45678910
          11121314151617
          18192021222324
          2526272829301
          2345678

          常用鏈接

          留言簿

          隨筆分類

          隨筆檔案

          文章分類

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          生命周期
          Android 系統在Activity 生命周期中加入一些鉤子,我們可以在這些系統預留的鉤子中做一些事情。
          例舉了 7 個常用的鉤子:
          protected void onCreate(Bundle savedInstanceState)
          protected void onStart()
          protected void onResume()
          protected void onPause()
          protected void onStop()
          protected void onRestart()
          protected void onDestroy()

          簡要說明:
          onCreate(Bundle savedInstanceState):創建activity時調用。設置在該方法中,還以Bundle中可以提出用于創建該 Activity 所需的信息。
          onStart():activity變為在屏幕上對用戶可見時,即獲得焦點時,會調用。
          onResume():activity開始與用戶交互時調用(無論是啟動還是重新啟動一個活動,該方法總是被調用的)。
          onPause():activity被暫停或收回cpu和其他資源時調用,該方法用于保存活動狀態的。。
          onStop():activity被停止并轉為不可見階段及后續的生命周期事件時,即失去焦點時調用。
          onRestart():重新啟動activity時調用。該活動仍在棧中,而不是啟動新的活動。
          onDestroy():activity被完全從系統內存中移除時調用,該方法被調用可能是因為有人直接調用 finish()方法 或者系統決定停止該活動以釋放資源。

          橫豎屏切換

          1 切換到橫屏
          onSaveInstanceState
          onPause
          onStop
          onDestroy
          onCreate
          onStart
          onRestoreInstanceState
          onResume

          2 切換到豎屏,銷毀了兩次
          onSaveInstanceState
          onPause
          onStop
          onDestroyonCreate
          onStart
          onRestoreInstanceState
          onResume
          onSaveInstanceState
          onPause
          onStop
          onDestroy
          onCreate
          onStart
          onRestoreInstanceState
          onResume

          3 修改AndroidManifest.xml,把該Activity添加 android:configChanges="orientation",切橫屏,只銷毀一次。

          onSaveInstanceState
          onPause
          onStop
          onDestroy
          onCreate
          onStart
          onRestoreInstanceState
          onResume

          再切回豎屏,發現不會再打印相同信息,但多打印了一行onConfigChanged

          onSaveInstanceState
          onPause
          onStop
          onDestroy
          onCreate
          onStart
          onRestoreInstanceState
          onResume
          onConfigurationChanged

          5 更改 android:configChanges="orientation" 改成 android:configChanges="orientation|keyboardHidden",切橫屏,就只打印onConfigChanged

          onConfigurationChanged

          6 切回豎屏

          onConfigurationChanged
          onConfigurationChanged

          總結:

          1、不設置Activity的android:configChanges時,切屏會重新調用各個生命周期,切橫屏時會執行一次,切豎屏時會執行兩次

          2、設置Activity的android:configChanges="orientation"時,切屏還是會重新調用各個生命周期,切橫、豎屏時只會執行一次

          3、設置Activity的android:configChanges="orientation|keyboardHidden"時,切屏不會重新調用各個生命周期,只會執行onConfigurationChanged方法





          posted on 2011-09-16 10:32 lincode 閱讀(3371) 評論(1)  編輯  收藏 所屬分類: android

          FeedBack:
          # re: [android] Activity 的生命周期 以及 橫屏豎屏切換時 Activity 的狀態變化[未登錄] 2012-04-22 02:02 dong
          cool,正需要。沒想到居然有這種變化啊  回復  更多評論
            
          主站蜘蛛池模板: 大足县| 元谋县| 独山县| 明溪县| 化隆| 保山市| 阳原县| 津南区| 湖州市| 鹰潭市| 图们市| 莱西市| 梅河口市| 岑巩县| 梁山县| 潜江市| 揭东县| 上饶市| 盐城市| 阿鲁科尔沁旗| 和林格尔县| 玛纳斯县| 保靖县| 井陉县| 南阳市| 吉木萨尔县| 云梦县| 新津县| 丹凤县| 大荔县| 东丽区| 永济市| 淄博市| 集贤县| 武鸣县| 沭阳县| 浦城县| 三门县| 乌拉特后旗| 朔州市| 张家口市|