赞
踩
Activity四种启动模式分别是standard,singleTop,singleTask,singltInstance.在执行各个模式时候的页面中执行的方法各不相同,我们常常只是口头叙述一下各种模式是怎么回事,但是真的被问到执行的方法,可能说的不是很清楚,这里通过打印log
的方法记录一下。
从MainActivity进入StandardActivity,执行的方法分别是:onCreate,onStart,onResume,onAttchedToWindow.
从StandardActivity进入StandardTestActivity后执行方法:onPause,onStop.可以看到,当StandardTestActivity执行完onResume后,StandardActivity的onStop方法才执行。
返回的时候可以看到从StandardTestActivity到StandardActivity,StandardActivity执行了onStart,onResume方法,而当StandardActivity的onResume方法执行后,StandardTestActivity执行了onStop,onDestroy,onDetachedFromWindow方法
再次点击返回从StandardActivity返回到MainActivity页面,StandardActivity也依次执行了onPause,onStop,onDestroy,onDetachedFromWindow方法
如图所示,这里分两种情况来看SingleTopActivity方法的执行。
可以从图中看到singleTop->singleTop
不再执行依次onCreate,onStart,onResume,而是执行了onNewIntent,onResume.
可以从图中看到singleTop-->standard-->singleTop
中,第二个singleTop依次执行了onCreate,onStart,onResume方法
如图所示,同样分两种情况来看SingleTaskActivity方法的执行。
可以从图中看到,singleTask->singleTask
和singleTop->singleTop
类似,也是执行了onNewIntent,onResume方法
可以从图中看到singleTask-->standard-->singleTask
,进入第二个singleTask的时候,StandardActivity执行的方法相当于finish的操作,也就是被移除了,singleTask则执行了onNewIntent,onStart,onResume方法。
返回的时候直接执行了singleTask的onPause,onStop,onDestroy,onDetachedFromWindow方法
如图所示,同样分两种情况来看SingleInstanceActivity方法的执行。
可以从图中看到,singleInstance->singleInstance
同样是执行了onNewIntent,onResume,前一个执行了onPause方法
可以从图中看到,前面的一切正常,进入第二个SingleInstanceActivity的时候,执行了onNewIntent,onStart,onResume方法,这个和singleTask是一样的,但是不同的是SingleInstanceActivity和StandardActivity不在同一个任务栈中。
从下图可以看到,SingleInstanceActivity点击返回到了StandardActivity中,再点击返回,则不再会回到SingleInstanceActivity。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。