Activity生命周期事件实验

突然发现最基础的activity生命周期很重要,就决定作一些实验,实验在不一样启动模式下,Activity生命周期方法的调用时机生命周期

如下关于activity的生命周期实验,是在2016.7.7,基于Android SDK VERSION 24 。get

前面列出实验的生命周期LOG,在最后写出了分析总结。it

1.Standard模式基础

这个标准模式是activity最经常使用的,启动的生命周期方法变化你们也应该最熟悉方法

启动StandardActivity:总结

com.example.lifecycle.StandardActivity---------onApplyThemeResource
com.example.lifecycle.StandardActivity---------onCreate
com.example.lifecycle.StandardActivity---------onContentChanged
com.example.lifecycle.StandardActivity---------onStart
com.example.lifecycle.StandardActivity---------onPostCreate
com.example.lifecycle.StandardActivity---------onResume
com.example.lifecycle.StandardActivity---------onPostResume
com.example.lifecycle.StandardActivity---------onAttachedToWindow
com.example.lifecycle.StandardActivity---------onWindowFocusChangedactivity

而后按返回键:top

com.example.lifecycle.StandardActivity---------finish
com.example.lifecycle.StandardActivity---------onPause
com.example.lifecycle.StandardActivity---------onWindowFocusChanged
com.example.lifecycle.StandardActivity---------onStop
com.example.lifecycle.StandardActivity---------onDestroy
com.example.lifecycle.StandardActivity---------onDetachedFromWindowvi

这样一个StandardActivity的生命周期就结束了。co

假如在StandardActivity resume的时候,按下Home键:

com.example.lifecycle.StandardActivity---------onUserLeaveHint
com.example.lifecycle.StandardActivity---------onPause
com.example.lifecycle.StandardActivity---------onWindowFocusChanged
com.example.lifecycle.StandardActivity---------onStop

而后再点击应用图标:

com.example.lifecycle.StandardActivity---------onRestart
com.example.lifecycle.StandardActivity---------onStart
com.example.lifecycle.StandardActivity---------onResume
com.example.lifecycle.StandardActivity---------onPostResume
com.example.lifecycle.StandardActivity---------onWindowFocusChanged

2.SingleTop模式

由StandardActivity跳转到SingleTopActivity:

com.example.lifecycle.StandardActivity---------onUserLeaveHint
com.example.lifecycle.StandardActivity---------onPause
com.example.lifecycle.SingleTopActivity---------onApplyThemeResource
com.example.lifecycle.SingleTopActivity---------onCreate
com.example.lifecycle.SingleTopActivity---------onContentChanged
com.example.lifecycle.SingleTopActivity---------onStart
com.example.lifecycle.SingleTopActivity---------onPostCreate
com.example.lifecycle.SingleTopActivity---------onResume
com.example.lifecycle.SingleTopActivity---------onPostResume
com.example.lifecycle.SingleTopActivity---------onAttachedToWindow
com.example.lifecycle.SingleTopActivity---------onWindowFocusChanged
com.example.lifecycle.StandardActivity---------onWindowFocusChanged
com.example.lifecycle.StandardActivity---------onStop

由SingleTopActivity跳转到该SingleTopActivity:

com.example.lifecycle.SingleTopActivity---------onPause
com.example.lifecycle.SingleTopActivity---------onNewIntent
com.example.lifecycle.SingleTopActivity---------onResume
com.example.lifecycle.SingleTopActivity---------onPostResume

而后再按返回键:

com.example.lifecycle.SingleTopActivity---------finish
com.example.lifecycle.SingleTopActivity---------onPause
com.example.lifecycle.StandardActivity---------onRestart
com.example.lifecycle.StandardActivity---------onStart
com.example.lifecycle.StandardActivity---------onResume
com.example.lifecycle.StandardActivity---------onPostResume
com.example.lifecycle.StandardActivity---------onWindowFocusChanged
com.example.lifecycle.SingleTopActivity---------onWindowFocusChanged
com.example.lifecycle.SingleTopActivity---------onStop
com.example.lifecycle.SingleTopActivity---------onDestroy
com.example.lifecycle.SingleTopActivity---------onDetachedFromWindow

3.SingleTask模式

由SingleTopActivity跳转到SingleTaskActivity:

com.example.lifecycle.SingleTopActivity---------onUserLeaveHint
com.example.lifecycle.SingleTopActivity---------onPause
com.example.lifecycle.SingleTaskActivity---------onApplyThemeResource
com.example.lifecycle.SingleTaskActivity---------onCreate
com.example.lifecycle.SingleTaskActivity---------onContentChanged
com.example.lifecycle.SingleTaskActivity---------onStart
com.example.lifecycle.SingleTaskActivity---------onPostCreate
com.example.lifecycle.SingleTaskActivity---------onResume
com.example.lifecycle.SingleTaskActivity---------onPostResume
com.example.lifecycle.SingleTaskActivity---------onAttachedToWindow
com.example.lifecycle.SingleTaskActivity---------onWindowFocusChanged
com.example.lifecycle.SingleTopActivity---------onWindowFocusChanged
com.example.lifecycle.SingleTopActivity---------onStop

由SingleTaskActivity跳转到该SingleTaskActivity:

com.example.lifecycle.SingleTaskActivity---------onPause
com.example.lifecycle.SingleTaskActivity---------onNewIntent
com.example.lifecycle.SingleTaskActivity---------onResume
com.example.lifecycle.SingleTaskActivity---------onPostResume

而后再按返回键:

com.example.lifecycle.SingleTaskActivity---------finish
com.example.lifecycle.SingleTaskActivity---------onPause
com.example.lifecycle.SingleTopActivity---------onRestart
com.example.lifecycle.SingleTopActivity---------onStart
com.example.lifecycle.SingleTopActivity---------onResume
com.example.lifecycle.SingleTopActivity---------onPostResume
com.example.lifecycle.SingleTopActivity---------onWindowFocusChanged
com.example.lifecycle.SingleTaskActivity---------onWindowFocusChanged
com.example.lifecycle.SingleTaskActivity---------onStop
com.example.lifecycle.SingleTaskActivity---------onDestroy
com.example.lifecycle.SingleTaskActivity---------onDetachedFromWindow

由SingleTaskActivity跳转到SingleTopActivity,而后再跳转到该SingleTaskActivity:

com.example.lifecycle.SingleTaskActivity---------onUserLeaveHint
com.example.lifecycle.SingleTaskActivity---------onPause
com.example.lifecycle.SingleTopActivity---------onApplyThemeResource
com.example.lifecycle.SingleTopActivity---------onCreate
com.example.lifecycle.SingleTopActivity---------onContentChanged
com.example.lifecycle.SingleTopActivity---------onStart
com.example.lifecycle.SingleTopActivity---------onPostCreate
com.example.lifecycle.SingleTopActivity---------onResume
com.example.lifecycle.SingleTopActivity---------onPostResume
com.example.lifecycle.SingleTopActivity---------onAttachedToWindow
com.example.lifecycle.SingleTopActivity---------onWindowFocusChanged
com.example.lifecycle.SingleTaskActivity---------onWindowFocusChanged
com.example.lifecycle.SingleTaskActivity---------onStop

//如下是再跳转到该SingleTaskActivity
com.example.lifecycle.SingleTopActivity---------onPause
com.example.lifecycle.SingleTopActivity---------onWindowFocusChanged
com.example.lifecycle.SingleTaskActivity---------onNewIntent
com.example.lifecycle.SingleTaskActivity---------onRestart
com.example.lifecycle.SingleTaskActivity---------onStart
com.example.lifecycle.SingleTaskActivity---------onResume
com.example.lifecycle.SingleTaskActivity---------onPostResume
com.example.lifecycle.SingleTaskActivity---------onWindowFocusChanged
com.example.lifecycle.SingleTopActivity---------onStop
com.example.lifecycle.SingleTopActivity---------onDestroy
com.example.lifecycle.SingleTopActivity---------onDetachedFromWindow

3.SingleInstance模式

由SingleTopActivity跳转到SingleInstanceActivity:

com.example.lifecycle.StandardActivity---------onUserLeaveHint
com.example.lifecycle.StandardActivity---------onPause
com.example.lifecycle.SingleInstanceActivity---------onApplyThemeResource
com.example.lifecycle.SingleInstanceActivity---------onCreate
SingleInstanceActivity: getTaskId----------147
com.example.lifecycle.SingleInstanceActivity---------onContentChanged
com.example.lifecycle.SingleInstanceActivity---------onStart
com.example.lifecycle.SingleInstanceActivity---------onPostCreate
com.example.lifecycle.SingleInstanceActivity---------onResume
com.example.lifecycle.SingleInstanceActivity---------onPostResume
com.example.lifecycle.SingleInstanceActivity---------onAttachedToWindow
com.example.lifecycle.StandardActivity---------onWindowFocusChanged
com.example.lifecycle.SingleInstanceActivity---------onWindowFocusChanged
com.example.lifecycle.StandardActivity---------onStop

而后再启动SingleInstanceActivity:

com.example.lifecycle.SingleInstanceActivity---------onPause
com.example.lifecycle.SingleInstanceActivity---------onNewIntent
com.example.lifecycle.SingleInstanceActivity---------onResume
                                                             --------- beginning of /dev/log/system
com.example.lifecycle.SingleInstanceActivity---------onPostResume

而后启动StandardActivity:

com.example.lifecycle.SingleInstanceActivity---------onUserLeaveHint
com.example.lifecycle.SingleInstanceActivity---------onPause
com.example.lifecycle.StandardActivity---------onApplyThemeResource
com.example.lifecycle.StandardActivity---------onCreate
StandardActivity: getTaskId----------146
com.example.lifecycle.StandardActivity---------onContentChanged
com.example.lifecycle.StandardActivity---------onStart
com.example.lifecycle.StandardActivity---------onPostCreate
com.example.lifecycle.StandardActivity---------onResume
com.example.lifecycle.StandardActivity---------onPostResume
com.example.lifecycle.StandardActivity---------onAttachedToWindow
com.example.lifecycle.StandardActivity---------onWindowFocusChanged
com.example.lifecycle.SingleInstanceActivity---------onWindowFocusChanged
com.example.lifecycle.SingleInstanceActivity---------onStop

而后再启动该SingleInstanceActivity:

com.example.lifecycle.StandardActivity---------onUserLeaveHint
com.example.lifecycle.StandardActivity---------onPause
com.example.lifecycle.SingleInstanceActivity---------onNewIntent
com.example.lifecycle.SingleInstanceActivity---------onRestart
com.example.lifecycle.SingleInstanceActivity---------onStart
com.example.lifecycle.SingleInstanceActivity---------onResume
com.example.lifecycle.SingleInstanceActivity---------onPostResume
com.example.lifecycle.SingleInstanceActivity---------onWindowFocusChanged
com.example.lifecycle.StandardActivity---------onWindowFocusChanged
com.example.lifecycle.StandardActivity---------onStop

总结

1.Standard模式的Activity启动和退出,按照任务栈先进后出的原则,遵循正常的生命周期运转。

2.SingleTop模式的Activity启动和退出,和Standard模式大致同样,区别在于若是该SingleTopActivity若是位于栈顶的话,再跳转的话不会从新建立一个SingleTopActivity,这时的生命周期是onPause-----onNewIntent---------onResume。

3.SingleTask模式的Activity,若是再启动时,任务栈里面已经有了一个该Activity,那么就不会建立新的SingleTaskActivity。这时若是该SingleTaskActivity在栈顶的话,和SingleTopActivity同样走的生命周期是onPause-----onNewIntent---------onResume。若是SingleTaskActivity不在栈顶的话,会把它上面的Activity所有销毁,此时SingleTaskActivity走的生命周期是onNewIntent---------onRestart----------onStart-----------onResume。

4.SingleInstance模式的Activity,区别于上面三种模式的一点是,SingleInstanceActivity的TaskId是单独的一个,其余三种模式的TaskId是同样的在一个任务栈里面。SingleInstanceActivity的生命周期和SingleTaskActivity的同样,不过于SingleTaskActivity不一样的一点是,若是Activity不在栈顶的话,SingleTaskActivity会把它上面的Activity所有销毁,而SingleInstanceActivity会直接把SingleInstanceActivity调到栈顶而不会影响其余的Activity,此时SingleInstanceActivity走的生命周期是onNewIntent---------onRestart----------onStart-----------onResume。

相关文章
相关标签/搜索