activity生命周期

onCreate
onStart
onResume
OnPause
onStop
onDestory

1.正常状态下

activityA到activityB
A.onCreat onStart onRusume 点击后.
A.onPause.>B.onCreat>B.onStart>B.onResume>A.onStop
其中要注意的是。onPause后,会调用一次A.onSavaInstance
点击返回键 或者关闭B
B.onPause>A.onRestart>A.onStart>A.onResume>B.onStop>B.onDestory
如果B是透明的 只会在onPause和OnResume之间变化。

2.横竖屏和被销毁一样的是异常状态。

横变竖 竖变横 生命周期只调用一次。网上很多地方说调用两次。也许是api问题。
创建onCreat>onStart>onResume
变横竖屏OnPause>OnSaveInstanceState>onStop>onDestory>onCreat||入参有值>onStart>OnRestoreInstanceState>onResume

设置configChange 后orientant screensize keyboradhidden
只调用onConfigrationChange()

3.launchMode 设置为singleTask singleTop singleInstance

如果栈中已经有了实例对象。再次startActivity时
onNewIntent()>onRestart>onStart>onResume

这里有一个有意思的地方哦

任务栈,TakAffinity allowTaskReparenter

任务栈用来管理activity。有两种前台任务栈,后台任务栈。

activity本来是哪个栈创建,就在哪个栈,如果设置了TakAffinity allowTaskReparenter,那就不一样了。
设置TaskAffinaty和singleTask配合使用,或者和allowTaskReparentrer配合使用。,如果不是对应包名,会新建一个栈,并管理activity。当前台任务栈中的activity都弹出后,后台任务栈会调转到前台,并且从栈顶开始显示activity。

allowTaskReparenter,是否允许ativity跳转到对应的任务栈。
A应用和B应用 A打开的B的b页面。如果打开B应用,b会从A的任务栈跳转到B的任务栈中,并且显示b页面,不管b是不是入口页面。因为本来B应用没打开,没有任务栈,打开B后,b就会找到自己的任务栈。就像你养了别人的狗,别人一开门,狗就跑回家了。

你可能感兴趣的:(activity生命周期)