您的位置:首页 > 移动开发 > Android开发

Android笔记之Activity生命周期实测

2015-09-11 11:55 567 查看
一. Activity启动过程

09-10 18:40:48.789    2602-2602/? I/PMC﹕ --InstallReceiver:actvity=com.example.qw.testapplication, com.example.qw.testapplication.lifecycle.CycleActivity, appName=TestApplication
09-10 18:40:48.909     525-1242/? I/ActivityManager﹕ START {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.example.qw.testapplication/.lifecycle.CycleActivity u=0} from pid 3710
09-10 18:40:49.029     525-2090/? I/ActivityManager﹕ START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.example.qw.testapplication/.lifecycle.CycleActivity} from pid 2602
09-10 18:40:49.069      525-525/? I/ActivityManager﹕ Start proc com.example.qw.testapplication for activity com.example.qw.testapplication/.lifecycle.CycleActivity: pid=3758 uid=10226 gids={50226, 1028}
09-10 18:40:49.399    3758-3758/? I/Debug﹕ at CycleActivity.onCreate(CycleActivity.java:25)
09-10 18:40:49.409    3758-3758/? I/Debug﹕ at CycleActivity.onCreateView(CycleActivity.java:132)
09-10 18:40:49.439    3758-3758/? I/Debug﹕ at CycleActivity.onCreateView(CycleActivity.java:132)
09-10 18:40:49.449    3758-3758/? I/Debug﹕ at CycleActivity.onCreateView(CycleActivity.java:132)
09-10 18:40:49.469    3758-3758/? I/Debug﹕ at CycleActivity.onCreateView(CycleActivity.java:132)
09-10 18:40:49.469    3758-3758/? I/Debug﹕ at CycleActivity.onCreateView(CycleActivity.java:132)
09-10 18:40:49.539    3758-3758/? I/Debug﹕ at CycleActivity.onStart(CycleActivity.java:49)
09-10 18:40:49.539    3758-3758/? I/Debug﹕ at CycleActivity.onPostCreate(CycleActivity.java:43)
09-10 18:40:49.539    3758-3758/? I/Debug﹕ at CycleActivity.onResume(CycleActivity.java:61)
09-10 18:40:49.549    3758-3758/? I/Debug﹕ at CycleActivity.onPostResume(CycleActivity.java:73)
09-10 18:40:49.569<
4000
/span>    3758-3758/? I/Debug﹕ at CycleActivity$1.run(CycleActivity.java:34):onCreate-->mHandler.post
09-10 18:40:49.569    3758-3758/? I/Debug﹕ at CycleActivity$2.run(CycleActivity.java:65):onResume-->mHandler.post
09-10 18:40:49.579    3758-3758/? I/Debug﹕ at CycleActivity.onAttachedToWindow(CycleActivity.java:85)
09-10 18:40:49.639    3758-3758/? I/Debug﹕ at CycleActivity$3.run(CycleActivity.java:89):onAttachedToWindow-->mHandler.post
09-10 18:40:49.649    3758-3758/? I/Debug﹕ at CycleActivity.onWindowFocusChanged(CycleActivity.java:79)
09-10 18:40:49.739      525-541/? I/ActivityManager﹕ Displayed com.example.qw.testapplication/.lifecycle.CycleActivity: +680ms (total +752ms)
09-10 18:40:49.929  19444-19444/? I/AppTrackBroadcastReceiver﹕ useTimes1|classNamecom.example.qw.testapplication.lifecycle.CycleActivity


小结:

1. onPostCreate在onStart之后执行

2. onCreate中的mHandler.post与onResume中的mHandler.post都是在onResume和onPostResume后执行

3. onCreateView在onCreate之后会执行多次

4. 在onCreate执行之前会先显示该CycleActivity主题中的Light、Black、Translucent板

二. 使用按键启动另一个Activity并返回

09-10 18:53:46.789     525-2090/? I/ActivityManager﹕ START {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.example.qw.testapplication/.lifecycle.CycleActivity u=0} from pid 4975
09-10 18:53:46.839     525-1241/? I/ActivityManager﹕ START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.example.qw.testapplication/.lifecycle.CycleActivity} from pid 2602
09-10 18:53:46.859  19444-19444/? I/AppTrackBroadcastReceiver﹕ useTimes4|classNamecom.example.qw.testapplication.lifecycle.CycleActivity
09-10 18:53:46.889      525-525/? I/ActivityManager﹕ Start proc com.example.qw.testapplication for activity com.example.qw.testapplication/.lifecycle.CycleActivity: pid=4985 uid=10226 gids={50226, 1028}
09-10 18:53:47.009    4985-4985/? I/Debug﹕ at CycleActivity.onCreate(CycleActivity.java:25)
09-10 18:53:47.059    4985-4985/? I/Debug﹕ at CycleActivity.onStart(CycleActivity.java:51)
09-10 18:53:47.059    4985-4985/? I/Debug﹕ at CycleActivity.onPostCreate(CycleActivity.java:45)
09-10 18:53:47.059    4985-4985/? I/Debug﹕ at CycleActivity.onResume(CycleActivity.java:63)
09-10 18:53:47.069    4985-4985/? I/Debug﹕ at CycleActivity.onPostResume(CycleActivity.java:75)
09-10 18:53:47.079    4985-4985/? I/Debug﹕ at CycleActivity$1.run(CycleActivity.java:36):onCreate-->mHandler.post
09-10 18:53:47.089    4985-4985/? I/Debug﹕ at CycleActivity$2.run(CycleActivity.java:67):onResume-->mHandler.post
09-10 18:53:47.089    4985-4985/? I/Debug﹕ at CycleActivity.onAttachedToWindow(CycleActivity.java:87)
09-10 18:53:47.129    4985-4985/? I/Debug﹕ at CycleActivity$3.run(CycleActivity.java:91):onAttachedToWindow-->mHandler.post
09-10 18:53:47.129    4985-4985/? I/Debug﹕ at CycleActivity.onWindowFocusChanged(CycleActivity.java:81)
09-10 18:53:47.199      525-541/? I/ActivityManager﹕ Displayed com.example.qw.testapplication/.lifecycle.CycleActivity: +319ms (total +382ms)
09-10 18:53:49.949      525-809/? I/ActivityManager﹕ requestCode=-1, resultTo=Token{41935f08 ActivityRecord{417e4d08 u0 com.example.qw.testapplication/.lifecycle.CycleActivity}}, 0
09-10 18:53:49.949      525-809/? I/ActivityManager﹕ START u0 {cmp=com.example.qw.testapplication/.lifecycle.CycleActivity2} from pid 4985
09-10 18:53:50.009    4985-4985/? I/Debug﹕ at CycleActivity.onPause(CycleActivity.java:99)
09-10 18:53:50.019    4985-4985/? I/Debug﹕ at CycleActivity2.onCreate(CycleActivity2.java:25)
09-10 18:53:50.029    4985-4985/? I/Debug﹕ at CycleActivity2.onStart(CycleActivity2.java:52)
09-10 18:53:50.029    4985-4985/? I/Debug﹕ at CycleActivity2.onPostCreate(CycleActivity2.java:46)
09-10 18:53:50.029    4985-4985/? I/Debug﹕ at CycleActivity2.onResume(CycleActivity2.java:64)
09-10 18:53:50.039    4985-4985/? I/Debug﹕ at CycleActivity2.onPostResume(CycleActivity2.java:76)
09-10 18:53:50.049    4985-4985/? I/Debug﹕ at CycleActivity.onWindowFocusChanged(CycleActivity.java:81)
09-10 18:53:50.049    4985-4985/? I/Debug﹕ at CycleActivity2$1.run(CycleActivity2.java:37):onCreate-->mHandler.post
09-10 18:53:50.059    4985-4985/? I/Debug﹕ at CycleActivity2$2.run(CycleActivity2.java:68):onResume-->mHandler.post
09-10 18:53:50.059    4985-4985/? I/Debug﹕ at CycleActivity2.onAttachedToWindow(CycleActivity2.java:88)
09-10 18:53:50.109    4985-4985/? I/Debug﹕ at CycleActivity2$3.run(CycleActivity2.java:92):onAttachedToWindow-->mHandler.post
09-10 18:53:50.109    4985-4985/? I/Debug﹕ at CycleActivity2.onWindowFocusChanged(CycleActivity2.java:82)
09-10 18:53:50.119      525-541/? I/ActivityManager﹕ Displayed com.example.qw.testapplication/.lifecycle.CycleActivity2: +111ms
09-10 18:53:50.469    4985-4985/? I/Debug﹕ at CycleActivity.onSaveInstanceState(CycleActivity.java:117)
09-10 18:53:50.479    4985-4985/? I/Debug﹕ at CycleActivity.onStop(CycleActivity.java:105)

// 返回键执行
09-10 18:53:54.369    4985-4985/? I/Debug﹕ at CycleActivity2.onPause(CycleActivity2.java:100)
09-10 18:53:54.379    4985-4985/? I/Debug﹕ at CycleActivity.onRestart(CycleActivity.java:57)
09-10 18:53:54.389    4985-4985/? I/Debug﹕ at CycleActivity.onStart(CycleActivity.java:51)
09-10 18:53:54.389    4985-4985/? I/Debug﹕ at CycleActivity.onResume(CycleActivity.java:63)
09-10 18:53:54.389    4985-4985/? I/Debug﹕ at CycleActivity.onPostResume(CycleActivity.java:75)
09-10 18:53:54.429    4985-4985/? I/Debug﹕ at CycleActivity$2.run(CycleActivity.java:67):onResume-->mHandler.post
09-10 18:53:54.429    4985-4985/? I/Debug﹕ at CycleActivity.onWindowFocusChanged(CycleActivity.java:81)
09-10 18:53:54.459    4985-4985/? I/Debug﹕ at CycleActivity2.onWindowFocusChanged(CycleActivity2.java:82)
09-10 18:53:54.779    4985-4985/? I/Debug﹕ at CycleActivity2.onStop(CycleActivity2.java:106)
09-10 18:53:54.779    4985-4985/? I/Debug﹕ at CycleActivity2.onDestroy(CycleActivity2.java:112)


小结:

1. 从CycleActivity迁移到CycleActivity2的执行顺序是CycleActivity.onPause–>CycleActivity2.onCreate–>CycleActivity2.(…)–>CycleActivity2.postResume–>CycleActivity.onWindowFocusChanged–>CycleActivity2.onAttachedToWindow–>CycleActivity2.onWindowFocusChanged–>CycleActivity.onSaveInstanceState–>CycleActivity.onStop

2. 返回时,执行顺序是CycleActivity2.onPause–>CycleActivity.onRestart–>CycleActivity.(…)–>CycleActivity.onWindowFocusChanged–>CycleActivity2.onWindowFocusChanged–>CycleActivity2.onStop–>CycleActivity2.onDestroy

3. 返回时,没有再执行CycleActivity.onAttachedToWindow方法,说明onAttachedToWindow跟onCreate一样只执行一次,可以在该处做一些想在界面显示后才执行的动作。并且此时界面中控件的位置、宽高已经计算出来,可以根据需要进行修改或其他显示变更。

4. onRestoreInstanceState说明:This method is called between onStart and onPostCreate.

三. 在CycleActivity.onCreate中启动CycleActivity2

09-10 19:33:30.509  11808-12221/system_process I/ActivityManager﹕ START {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.example.qw.testapplication/.lifecycle.CycleActivity u=0} from pid 14515
09-10 19:33:30.589  11808-12226/system_process I/ActivityManager﹕ START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.example.qw.testapplication/.lifecycle.CycleActivity} from pid 12284
09-10 19:33:30.649  12225-12225/com.noahedu.launcher I/AppTrackBroadcastReceiver﹕ useTimes9|classNamecom.example.qw.testapplication.lifecycle.CycleActivity
09-10 19:33:30.649  11808-12224/system_process I/ActivityManager﹕ Start proc com.example.qw.testapplication for activity com.example.qw.testapplication/.lifecycle.CycleActivity: pid=14526 uid=10226 gids={50226, 1028}
09-10 19:33:30.909  14526-14526/com.example.qw.testapplication I/Debug﹕ at CycleActivity.onCreate(CycleActivity.java:25)
09-10 19:33:30.979  11808-13010/system_process I/ActivityManager﹕ requestCode=-1, resultTo=Token{41199b58 ActivityRecord{41205160 u0 com.example.qw.testapplication/.lifecycle.CycleActivity}}, 0
09-10 19:33:30.979  11808-13010/system_process I/ActivityManager﹕ START u0 {cmp=com.example.qw.testapplication/.lifecycle.CycleActivity2} from pid 14526
09-10 19:33:30.989  14526-14526/com.example.qw.testapplication I/Debug﹕ at CycleActivity.onStart(CycleActivity.java:53)
09-10 19:33:30.999  14526-14526/com.example.qw.testapplication I/Debug﹕ at CycleActivity.onPostCreate(CycleActivity.java:47)
09-10 19:33:30.999  14526-14526/com.example.qw.testapplication I/Debug﹕ at CycleActivity.onResume(CycleActivity.java:65)
09-10 19:33:31.009  14526-14526/com.example.qw.testapplication I/Debug﹕ at CycleActivity.onPostResume(CycleActivity.java:77)
09-10 19:33:31.029  14526-14526/com.example.qw.testapplication I/Debug﹕ at CycleActivity$1.run(CycleActivity.java:36):onCreate-->mHandler.post
09-10 19:33:31.029  14526-14526/com.example.qw.testapplication I/Debug﹕ at CycleActivity.onPause(CycleActivity.java:101)
09-10 19:33:31.049  14526-14526/com.example.qw.testapplication I/Debug﹕ at CycleActivity$2.run(CycleActivity.java:69):onResume-->mHandler.post
09-10 19:33:31.059  14526-14526/com.example.qw.testapplication I/Debug﹕ at CycleActivity.onAttachedToWindow(CycleActivity.java:89)
09-10 19:33:31.069  14526-14526/com.example.qw.testapplication I/Debug﹕ at CycleActivity2.onCreate(CycleActivity2.java:25)
09-10 19:33:31.079  14526-14526/com.example.qw.testapplication I/Debug﹕ at CycleActivity2.onStart(CycleActivity2.java:52)
09-10 19:33:31.079  14526-14526/com.example.qw.testapplication I/Debug﹕ at CycleActivity2.onPostCreate(CycleActivity2.java:46)
09-10 19:33:31.089  14526-14526/com.example.qw.testapplication I/Debug﹕ at CycleActivity2.onResume(CycleActivity2.java:64)
09-10 19:33:31.089  14526-14526/com.example.qw.testapplication I/Debug﹕ at CycleActivity2.onPostResume(CycleActivity2.java:76)
09-10 19:33:31.089  14526-14526/com.example.qw.testapplication I/Debug﹕ at CycleActivity$3.run(CycleActivity.java:93):onAttachedToWindow-->mHandler.post
09-10 19:33:31.089  14526-14526/com.example.qw.testapplication I/Debug﹕ at CycleActivity2$1.run(CycleActivity2.java:37):onCreate-->mHandler.post
09-10 19:33:31.099  14526-14526/com.example.qw.testapplication I/Debug﹕ at CycleActivity2$2.run(CycleActivity2.java:68):onResume-->mHandler.post
09-10 19:33:31.099  14526-14526/com.example.qw.testapplication I/Debug﹕ at CycleActivity2.onAttachedToWindow(CycleActivity2.java:88)
09-10 19:33:31.179  14526-14526/com.example.qw.testapplication I/Debug﹕ at CycleActivity2$3.run(CycleActivity2.java:92):onAttachedToWindow-->mHandler.post
09-10 19:33:31.179  14526-14526/com.example.qw.testapplication I/Debug﹕ at CycleActivity2.onWindowFocusChanged(CycleActivity2.java:82)
09-10 19:33:31.279  11808-11859/system_process I/ActivityManager﹕ Displayed com.example.qw.testapplication/.lifecycle.CycleActivity2: +235ms (total +711ms)
09-10 19:33:31.289  14526-14526/com.example.qw.testapplication I/Debug﹕ at CycleActivity.onSaveInstanceState(CycleActivity.java:119)
09-10 19:33:31.289  14526-14526/com.example.qw.testapplication I/Debug﹕ at CycleActivity.onStop(CycleActivity.java:107)
09-10 19:36:12.059  14526-14526/com.example.qw.testapplication I/Debug﹕ at CycleActivity2.onPause(CycleActivity2.java:100)
09-10 19:36:12.069  14526-14526/com.example.qw.testapplication I/Debug﹕ at CycleActivity.onRestart(CycleActivity.java:59)
09-10 19:36:12.079  14526-14526/com.example.qw.testapplication I/Debug﹕ at CycleActivity.onStart(CycleActivity.java:53)
09-10 19:36:12.079  14526-14526/com.example.qw.testapplication I/Debug﹕ at CycleActivity.onResume(CycleActivity.java:65)
09-10 19:36:12.079  14526-14526/com.example.qw.testapplication I/Debug﹕ at CycleActivity.onPostResume(CycleActivity.java:77)
09-10 19:36:12.129  14526-14526/com.example.qw.testapplication I/Debug﹕ at CycleActivity$2.run(CycleActivity.java:69):onResume-->mHandler.post
09-10 19:36:12.129  14526-14526/com.example.qw.testapplication I/Debug﹕ at CycleActivity.onWindowFocusChanged(CycleActivity.java:83)
09-10 19:36:12.159  11808-11859/system_process I/ActivityManager﹕ Displayed com.example.qw.testapplication/.lifecycle.CycleActivity: +2m41s517ms
09-10 19:36:12.159  14526-14526/com.example.qw.testapplication I/Debug﹕ at CycleActivity2.onWindowFocusChanged(CycleActivity2.java:82)
09-10 19:36:12.489  14526-14526/com.example.qw.testapplication I/Debug﹕ at CycleActivity2.onStop(CycleActivity2.java:106)
09-10 19:36:12.499  14526-14526/com.example.qw.testapplication I/Debug﹕ at CycleActivity2.onDestroy(CycleActivity2.java:112)


小结:

1. CycleActivity.onAttachedToWindow在CycleActivity.onPause之后才执行,并且CycleActivity.onPause在CycleActivity.onResume之后立即就执行了,导致onResume–>mHandler.post在CycleActivity.onPause后才执行

2. CycleActivity中onAttachedToWindow–>mHandler.post是在CycleActivity2.onResume才执行,不知道是否一直这样,机器性能有无影响?

3. CycleActivity2启动之前还是会走完CycleActivity启动过程

四. 在CycleActivity.onCreate中启动CycleActivity2并调用CycleActivity.finish

09-10 19:46:48.149  11808-12216/system_process I/ActivityManager﹕ Start proc com.example.qw.testapplication for activity com.example.qw.testapplication/.lifecycle.CycleActivity: pid=20290 uid=10226 gids={50226, 1028}
09-10 19:46:48.409  20290-20290/com.example.qw.testapplication I/Debug﹕ at CycleActivity.onCreate(CycleActivity.java:25)
09-10 19:46:48.409  11808-13010/system_process I/ActivityManager﹕ requestCode=-1, resultTo=Token{4129a4a8 ActivityRecord{410c8b58 u0 com.example.qw.testapplication/.lifecycle.CycleActivity}}, 0
09-10 19:46:48.409  11808-13010/system_process I/ActivityManager﹕ START u0 {cmp=com.example.qw.testapplication/.lifecycle.CycleActivity2} from pid 20290
09-10 19:46:48.499  20290-20290/com.example.qw.testapplication I/Debug﹕ at CycleActivity$1.run(CycleActivity.java:37):onCreate-->mHandler.post
09-10 19:46:48.509  20290-20290/com.example.qw.testapplication I/Debug﹕ at CycleActivity2.onCreate(CycleActivity2.java:25)
09-10 19:46:48.519  20290-20290/com.example.qw.testapplication I/Debug﹕ at CycleActivity2.onStart(CycleActivity2.java:52)
09-10 19:46:48.519  20290-20290/com.example.qw.testapplication I/Debug﹕ at CycleActivity2.onPostCreate(CycleActivity2.java:46)
09-10 19:46:48.519  20290-20290/com.example.qw.testapplication I/Debug﹕ at CycleActivity2.onResume(CycleActivity2.java:64)
09-10 19:46:48.519  20290-20290/com.example.qw.testapplication I/Debug﹕ at CycleActivity2.onPostResume(CycleActivity2.java:76)
09-10 19:46:48.539  20290-20290/com.example.qw.testapplication I/Debug﹕ at CycleActivity2$1.run(CycleActivity2.java:37):onCreate-->mHandler.post
09-10 19:46:48.549  20290-20290/com.example.qw.testapplication I/Debug﹕ at CycleActivity2$2.run(CycleActivity2.java:68):onResume-->mHandler.post
09-10 19:46:48.549  20290-20290/com.example.qw.testapplication I/Debug﹕ at CycleActivity2.onAttachedToWindow(CycleActivity2.java:88)
09-10 19:46:48.629  20290-20290/com.example.qw.testapplication I/Debug﹕ at CycleActivity2$3.run(CycleActivity2.java:92):onAttachedToWindow-->mHandler.post
09-10 19:46:48.629  20290-20290/com.example.qw.testapplication I/Debug﹕ at CycleActivity2.onWindowFocusChanged(CycleActivity2.java:82)
09-10 19:46:48.699  20290-20290/com.example.qw.testapplication I/Debug﹕ at CycleActivity.onDestroy(CycleActivity.java:113)
09-10 19:46:48.709  11808-11859/system_process I/ActivityManager﹕ Displayed com.example.qw.testapplication/.lifecycle.CycleActivity2: +219ms (total +709ms)
09-10 19:47:06.849  20290-20290/com.example.qw.testapplication I/Debug﹕ at CycleActivity2.onPause(CycleActivity2.java:100)
09-10 19:47:06.889  20290-20290/com.example.qw.testapplication I/Debug﹕ at CycleActivity2.onWindowFocusChanged(CycleActivity2.java:82)
09-10 19:47:07.429  20290-20290/com.example.qw.testapplication I/Debug﹕ at CycleActivity2.onStop(CycleActivity2.java:106)
09-10 19:47:07.429  20290-20290/com.example.qw.testapplication I/Debug﹕ at CycleActivity2.onDestroy(CycleActivity2.java:112)


小结:

1. CycleActivity只执行了CycleActivity.onCreate和CycleActivity.onDestroy

2. CycleActivity.onDestroy在CycleActivity2.onAttachedToWindow、CycleActivity2.onWindowFocusChanged后执行
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android 生命周期