Activity生命周期
-
Activity启动:onCreate()->onStrat()->onResume();
-
点击Home返回:onPause()->onStop() 新Activity如果为透明,不会调用onStop();
-
返回原Activity:onRestart()→onStart()→onResume()
-
退出当前Activity时:onPause()→onStop()→onDestroy()
-
当执行到onPause()方法Activity失去焦点时,重新回到前台会执行onResume()方法
-
当执行到onStop()方法Activity不可见时,再次回到前台会执行onRestart()方法,如果此时进程被销毁Activity会重新执行onCreate()方法。
-
两个Activity(A、B)切换(B是正常的Activity)的生命周期:onPause(A)->onCreate(B)->onStart(B)->onResume(B)->onStop(A)
。这时如果按back键回退到A,生命周期为:onPause(B)->onRestart(A)->onStart(A)->onResume(A)->onStop(B)。如果在切换到
B后调用了A.finish(),则会走到onDestory(A),这时点back键会退出应用。
-
两个Activity(A、B)切换(B是透明主题的Activity或是Dialog风格的Activity)的生命周期:onPause(A)->onCreate(B)-onStart(B)->onResume(B)。这时如果回退到A ,生命周期为:onPause(B)->onResume(A)->onStop(B)->onDestory(B)。
活动的启动模式
standard、singleTop、singleTask、singleInstance
standard:是活动默认的启动模式,每启动一个活动,都会在返回栈中入栈,不管活动是否已经在返回栈中存在,每次启动都会创建一个新的实例
singleTop:当要启动的Activity已经处于栈顶时,再启动相同活动,不会入栈,直接复用,同时它的OnNewIntent方法会被调用,通过方法的参数可以取出其中的信息。如果要启动的Activity不位于栈顶,则会创建一个新的实例
singleTask:每次启动该活动的时候系统会首先在返回栈中检查是否有存在该活动的实例,如果发现以及存在则直接使用该实例,保证整个栈只存在唯一一个活动实例,并且系统也会回调其OnNewIntent方法,即使不在栈顶,则把此活动之上的所有活动出栈。如果没有发现就会创建一个新的活动实例
singleInstance:具备singleTask模式的所有的特性,该模式下会启用一个新的单独的返回栈管理这个活动,可以实现程序间共享该活动