美文网首页
生命周期

生命周期

作者: 码农_薛 | 来源:发表于2020-09-01 11:34 被阅读0次

    Activity声明周期

    E/A---: onCreate

    E/A---: onStart

    E/A---: onResume

    E/A---: onPause

    E/A---: onStop

    E/A---: onDestroy

    A--B

    E/A---: onCreate

    E/A---: onStart

    E/A---: onResume

    跳转B

    E/A---: onPause

    E/B---: onCreate

    E/B---: onStart

    E/B---: onResume

    E/A---: onStop

    返回A

    E/B---: onPause

    E/A---: onRestart

    E/A---: onStart

    E/A---: onResume

    E/B---: onStop

    E/B---: onDestroy

    横竖屏切换

    竖屏-横屏

    E/A---: onPause

    E/A---: onStop

    E/A---: onDestroy

    E/A---: onCreate

    E/A---: onStart

    E/A---: onResume

    横屏--竖屏(同上)

    解决方式:

    1、设置横竖屏(固定)

    android:screenOrientation="xxx"

    landscape 横屏

    portrait 竖屏

    2、设置不改变生命周期

    android:configChanges="keyboardHidden|orientation|screenSize"

    监听切换

    @Override

    ​ public void onConfigurationChanged(Configuration newConfig) {

    ​ }

    判断 当前状态

    getResources().getConfiguration().orientation

    Fragment 生命周期

    Fragment创建对象并不会执行生命周期

    使用FragmentManager时 :

    Add生命周期:

    开始

    E/A---: onCreate

    E/A---: onCreateView

    E/A---: onViewCreated

    E/A---: onActivityCreated

    E/A---: onStart

    E/A---: onResume

    // 结束

    E/A---: onPause

    E/A---: onStop

    E/A---: onDestroyView

    E/A---: onDestroy

    E/A---: onDetach

    show和hide时 生命周期无变化

    Replace方法切换时

    ​ E/B---: onCreate

    ​ E/A---: onPause

    ​ E/A---: onStop

    ​ E/A---: onDestroyView

    ​ E/A---: onDestroy

    ​ E/A---: onDetach

    ​ E/B---: onCreateView

    ​ E/B---: onViewCreated

    ​ E/B---: onActivityCreated

    ​ E/B---: onStart

    ​ E/B---: onResume

    ViewPager + fragment

    1) FragmentPagerAdapter和FragmentStatePagerAdapter

    不同点: fragment 存储、恢复、销毁 的方式不同

    2)显隐监听

    setUserVisibleHint 生效

    onHiddenChanged无效

    FragmentPagerAdapter

    1 初始化时生命周期

    ​ E/D---: onCreate

    ​ E/D---: onCreateView

    ​ E/D---: onViewCreated

    ​ E/D---: onActivityCreated

    ​ E/D---: onStart

    ​ E/D---: onResume

    2 未销毁时页面切换不调用生命周期
    3.1 销毁时调用生命周期

    E/A---: onPause

    E/A---: onStop

    E/A---: onDestroyView

    3.2 销毁再次创建(少一个onCreate)

    ​ E/A---: onCreateView

    ​ E/A---: onViewCreated

    ​ E/A---: onActivityCreated

    ​ E/A---: onStart

    ​ E/A---: onResume

    4 新创建并销毁一个

    ​ E/D---: onCreate

    ​ E/A---: onPause

    ​ E/A---: onStop

    ​ E/A---: onDestroyView

    ​ E/D---: onCreateView

    ​ E/D---: onViewCreated

    ​ E/D---: onActivityCreated

    ​ E/D---: onStart

    ​ E/D---: onResume

    5 再次显示时

    ​ E/A---: onCreateView

    ​ E/A---: onViewCreated

    ​ E/A---: onActivityCreated

    ​ E/D---: onPause

    ​ E/D---: onStop

    ​ E/D---: onDestroyView

    ​ E/A---: onStart

    ​ E/A---: onResume

    6退出时生命周期

    ​ E/C---: onPause

    ​ E/C---: onStop

    ​ E/C---: onDestroyView

    ​ E/C---: onDestroy

    ​ E/C---: onDetach

    FragmentStatePagerAdapter

    1 初始化时正常周期(同上)
    2 未销毁时页面切换不调用生命周期
    3 销毁时调用生命周期

    E/A---: onPause

    E/A---: onStop

    E/A---: onDestroyView

    E/A---: onDestroy

    E/A---: onDetach

    4 新创建并销毁一个

    E/D---: onCreate

    E/A---: onPause

    E/A---: onStop

    E/A---: onDestroyView

    E/A---: onDestroy

    E/A---: onDetach

    E/D---: onCreateView

    E/D---: onViewCreated

    E/D---: onActivityCreated

    E/D---: onStart

    E/D---: onResume

    5 再次显示时(同4)
    6退出时生命周期(正常退出)

    相关文章

      网友评论

          本文标题:生命周期

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