Android Fragment生命周期和参数传递

在使用Fragment时,发现自己其实对Fragment的生命周期不是分厂熟悉,查询一番,发现一张比较不错的图:
这里写图片描述

可见fragment的销毁还是很优雅地,一个一个的来。

下面贴一下 activity和fragment同时运行时候的 生命周期

开始启动:  
05-07 05:55:08.553: I/Log(1990): oncreate  
05-07 05:55:08.553: I/Log(1990): onAttach_Fragment  
05-07 05:55:08.553: I/Log(1990): onCreate_Fragment  
05-07 05:55:08.553: I/Log(1990): onCreateView_Fragment  
05-07 05:55:08.553: I/Log(1990): onActivityCreated_Fragment  
05-07 05:55:08.553: I/Log(1990): onStart  
05-07 05:55:08.553: I/Log(1990): onStart_Fragment  
05-07 05:55:08.553: I/Log(1990): onResume  
05-07 05:55:08.553: I/Log(1990): onResume_Fragment  

按下home按键  
05-07 05:55:28.725: I/Log(1990): onPause_Fragment  
05-07 05:55:28.725: I/Log(1990): onPause  
05-07 05:55:29.221: I/Log(1990): onStop_Fragment  
05-07 05:55:29.221: I/Log(1990): onStop  
再回到界面  
05-07 05:55:49.441: I/Log(1990): onRestart  
05-07 05:55:49.441: I/Log(1990): onStart  
05-07 05:55:49.441: I/Log(1990): onStart_Fragment  
05-07 05:55:49.441: I/Log(1990): onResume  
05-07 05:55:49.441: I/Log(1990): onResume_Fragment  
销毁activity  
05-07 05:59:02.293: I/Log(1990): onPause_Fragment  
05-07 05:59:02.293: I/Log(1990): onPause  
05-07 05:59:02.757: I/Log(1990): onStop_Fragment  
05-07 05:59:02.757: I/Log(1990): onStop  
05-07 05:59:02.757: I/Log(1990): onDestroyView_Fragment  
05-07 05:59:02.757: I/Log(1990): onDestroy_Fragment  
05-07 05:59:02.757: I/Log(1990): onDetach_Fragment  
05-07 05:59:02.757: I/Log(1990): onDestroy  

可以看出 当现实fragment的时候都先执行activity方法,当销毁的时候都是先执行 fragment的方法;

知道了Fragment的生命周期与Activity的生命周期,以后再做一些相关操作的时候,你可能就会游刃有余了。。。

看到一个经典的面试题:Fragment之间如何通讯?这里特意总结一下:

  • 调用Fragment的setArgument方法;

Android比较推荐的一种传递数据的方式,android API;

  • 通过静态方法传递参数;

这种方式比较简单明了,但是缺点是对多线程并发的支持,多线程下传递参数可能存在问题;

  • 通过事件总线框架传递参数(EventBus,Otto);

通过事件总线的方式传递参数,这种方式比较简单明了,但是缺点是如果项目比较大的话可能会使项目代码有些凌乱;

  • 通过getActivity方式获得activity进而传递参数;

一种比较取巧的传递参数方式,比较推荐这种方式,但是需要注意的是一定要判断getActivity的返回值是否为空;

  • 通过广播的方式传递;

这种方式可能比较复杂,通过这种方式可能有些杀鸡用牛刀的赶脚;

  • 通过接口回调的方式传递;

需要自定义接口回调函数,书写上比较复杂,但是简单实用;

以上就是Fragment之间传递参数的几种方式,个人比较推荐使用事件总线框架的方式,比较优雅和简单;

其他文章:
Android Fragment 深度解析

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值