Activity和Fragment回调研究

来源:互联网 发布:网络配音社团 编辑:程序博客网 时间:2024/05/07 19:00

Activity和Fragment回调研究

  • Activity和Fragment回调研究
    • 所有回调
      • Activity
      • Fragment
    • 调用示例
      • 没有加回退栈
      • 加了回退栈反注册没了啊啊

所有回调

Activity

  • onCreate : 第一次创建的时候执行
  • onContentChanged : 当Activity的布局改动时,即setContentView()或者addContentView()方法执行完毕时就会调用该方法
  • onStart : 紧跟onCreate之后启动
  • onRestart :当前Activity从不可见重新变为可见的状态时onRestart就会被调用
  • onPostCreate :onCreate方法彻底执行完毕的回调
  • onResume :窗口可见,并且即将与用户交互
  • onPostResume :onResume方法彻底执行完毕的回调
  • onPause : 整个窗口被半遮盖或者半透明的时候会执行
  • onStop : 整个窗口被完全遮盖才会触发
  • onDestroy : Activity即将被销毁,这是Activity生命周期的最后一个回调

程序启动运行并结束上述生命周期的方法执行顺序是这样的:

onCreate –> onContentChanged –> onStart –> onPostCreate –> onResume –> onPostResume –> onPause –> onStop –> onDestroy

Fragment

  • onAttach 在Fragment与其Activity关联之后调用

  • onCreate 该fragmet还没有获得Activity的onCreate()已完成的通知,所以不能将依赖于Activity视图层次结构存在性的代码放入此回调方法中

  • onCreateView 为Fragment加载布局时调用。

  • onViewCreated 紧跟OnCreateView之后被调用

  • onActivityCreated : 当Activity的onCreate()方法执行完之后,调用这个回调方法。

    onStart()\onResume()\onPause()\onStop()回调方法将和Activity的回调方法进行绑定,


  • onStart

  • onResume

  • onPause

  • onStop


  • onDestroyView Fragment中的布局被移除时调用。

  • onDestroy 不再使用Fragment时调用,Fragment仍然附加到Activity并可以找到,但是不能执行其他操作

  • onDetach Fragme 当从Activity中解除Fragment的关联时,调用这个回调方法。

调用示例

没有加回退栈

  • 打开一个附着Fragment的Activity

MainActivity: onCreate~~
Fragment1: onAttach
Fragment1: onCreate
Fragment1: onCreateView
Fragment1: onViewCreated
Fragment1: onActivityCreated
Fragment1: onStart
MainActivity: onStart~~~
MainActivity: onResume~~~
Fragment1: onResume

  • 点击切换到另一个Fragment

Fragment1: onPause
Fragment1: onStop
Fragment1: onDestroyView
Fragment1: onDestroy
Fragment1: onDetach
Fragment2: onAttach
Fragment2: onCreate
Fragment2: onCreateView
Fragment2: onViewCreated
Fragment2: onActivityCreated
Fragment2: onStart
Fragment2: onResume

  • 关闭Activity

Fragment2: onPause
MainActivity: onPause~~~
Fragment2: onStop
MainActivity: onStop~~~
Fragment2: onDestroyView
Fragment2: onDestroy
Fragment2: onDetach
MainActivity: onDestroy~~~

  • 打开一个Activity

Fragment1: onPause
MainActivity: onPause~~~
Activity2: onCreate
Activity2: onStart~~~
Activity2: onResume~~~
Fragment1: onStop
MainActivity: onStop~~~

  • 打开另一个附着Fragment的Activity

Fragment1: onPause
MainActivity: onPause~~~
Activity2: onCreate
Fragment3: onAttach
Fragment3: onCreate
Fragment3: onCreateView
Fragment3: onViewCreated
Fragment3: onActivityCreated
Fragment3: onStart
Activity2: onStart~~~
Activity2: onResume~~~
Fragment3: onResume
Fragment1: onStop
MainActivity: onStop~~~

  • 回到之前的Activity

Fragment3: onPause
Activity2: onPause~~~
MainActivity: onRestart~~~
Fragment1: onStart
MainActivity: onStart~~~
MainActivity: onResume~~~
Fragment1: onResume
Fragment3: onStop
Activity2: onStop~~~
Fragment3: onDestroyView
Fragment3: onDestroy
Fragment3: onDetach
Activity2: onDestroy~~~

加了回退栈(反注册没了啊啊)

  • 打开activity

MainActivity: onCreate
Fragment1: onAttach
Fragment1: onCreate
Fragment1: onCreateView
Fragment1: onViewCreated
Fragment1: register
Fragment1: onActivityCreated
Fragment1: onStart
MainActivity: onStart~~~
MainActivity: onResume~~~

  • 切换Fragment

Fragment1: onResume
Fragment1: onPause
Fragment1: onStop
Fragment1: onDestroyView
Fragment2: onAttach
Fragment2: onCreate
Fragment2: onCreateView
Fragment2: onViewCreated
Fragment2: onActivityCreated
Fragment2: onStart
Fragment2: onResume

  • 切换回原Fragment

Fragment2: onResume
Fragment2: onPause
Fragment2: onStop
Fragment2: onDestroyView
Fragment1: onCreateView
Fragment1: onViewCreated
Fragment1: register
Fragment1: onActivityCreated
Fragment1: onStart
Fragment1: onResume

可见:onAttach、onCreate、ondestroy和ondetach没有调用

0 0
原创粉丝点击