fragment ondetach 什么时候执行

 我来答
裔婉君
2016-09-26 · 超过70用户采纳过TA的回答
知道小有建树答主
回答量:330
采纳率:5%
帮助的人:130万
展开全部
当我们在一个viewpager放一个fragment,当切换viewpager当中的viewpager时,fragment的打印输出如下:

1.D:\Users\zhongxw>adb logcat -s debug
--------- beginning of /dev/log/main
--------- beginning of /dev/log/system
V/debug (17567): onAttach
V/debug (17567): onCreate
V/debug (17567): oncreateview
V/debug (17567): onActivityCreated
V/debug (17567): onResume

切换到别fragment的时打印出:
V/debug (17567): onPause
V/debug (17567): onDestroyView

注意执行了onDestroyView进行了销毁,而下面的onCreateView也是进行对应的

重新愀复时执行:
V/debug (17567): oncreateview
V/debug (17567): onActivityCreated
V/debug (17567): onResume

再退出:
V/debug (17567): onPause
V/debug (17567): onDestroyView
V/debug (17567): onDestroy
V/debug (17567): onDetach

2.如果是打开退出两种状态的切换:
打开:
V/debug (17567): onCreate
V/debug (17567): oncreateview
V/debug (17567): onActivityCreated
V/debug (17567): onResume

退出是:
V/debug (17567): onPause
V/debug (17567): onDestroyView
V/debug (17567): onDestroy
V/debug (17567): onDetach

3.**我们看到都没有执行onPause函数,onPause()多长发生如果点击fragment中的内容时或者这时弹出别的app或者说是activity,跳转到一个新界面,把当前的fragment盖住了,生命周期通常是这样的:

D:\Users\zhongxw>adb logcat -s debug
--------- beginning of /dev/log/system
--------- beginning of /dev/log/main
V/debug (17567): onPause
V/debug (17567): onResume

跳进入是onPause(),恢复时是onResume()

4.如果我们fragment已经展示了,我们按home键进入后台,再进入前台,则执行:
A。进入后台
V/debug (22269): onPause

B,恢复前台

V/debug (22269): onResume
我们看到这里前没有执行onDestroy(),没有销毁,所以也没有执行onCreateView()进行重绘。跟前面3中所描述的切换到别的activity中是一样的效果。

这里我没有打印onStart()跟onStop()函数,,因为onResume以前一定会执行onStart(),在onPause后也会执行onStop()这个函数
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式