一. 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 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后执行