Activity和Fragment回调研究

xiaoxiao2021-02-28  136

Activity和Fragment回调研究

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

所有回调

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没有调用

转载请注明原文地址: https://www.6miu.com/read-28260.html

最新回复(0)