美文网首页
activity生命周期

activity生命周期

作者: 冬冬269 | 来源:发表于2018-08-10 23:13 被阅读0次

    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生命周期

          本文链接:https://www.haomeiwen.com/subject/qbxrbftx.html