Android Fragment复盘

1、Fragment 其他派生类

DialogFragment

一个fragment可以在fragment的父activity上显示一个浮动的对话框,而且可以自定义对话框的UI

ListFragment

绑定数据源呈现一个Listview作为它主要的UI展示方式

WebViewFragment

封装了WebView,当Fragment被暂停或恢复时,子WebView同样会被暂停和恢复

2、Fragment添加方式

2.1 xml中添加。(不建议,无法移除)

2.2 代码add/hide/show/remove

3、方法区别

show(),hide()最终是让Fragment的View setVisibility(true还是false),不会调用生命周期;
replace()的话会销毁视图,即调用onDestoryView、onCreateView等一系列生命周期;
add()和 replace()不要在同一个阶级的FragmentManager里混搭使用
如果你有一个很高的概率会再次使用当前的Fragment,建议使用show(),hide(),可以提高性能。而不是replace()

如果你的app有大量图片,这时更好的方式可能是replace,配合你的图片框架在Fragment视图销毁时,回收其图片所占的内存

3.x、当使用add()+show(),hide()跳转新的Fragment时,

旧的Fragment回调onHiddenChanged(),不会回调onStop()等生命周期方法,
而新的Fragment在创建时是不会回调onHiddenChanged(),这点要切记。

4、关于FragmentManager

对于Fragment,getFragmentManager()是获取的是父Fragment(如果没有,则是FragmentActivity)的FragmentManager对象,而getChildFragmentManager()是获取自己的FragmentManager对象。

5、pageAdapter + viewpage使用情型

使用FragmentPagerAdapter+ViewPager时,切换回上一个Fragment页面时(已经初始化完毕),不会回调任何生命周期方法以及onHiddenChanged(),只有setUserVisibleHint(boolean isVisibleToUser)会被回调,所以如果你想进行一些懒加载,需要在这里处理。

在给ViewPager绑定FragmentPagerAdapter时,
new FragmentPagerAdapter(fragmentManager)的FragmentManager,一定要保证正确,如果ViewPager是Activity内的控件,则传递getSupportFragmentManager(),如果是Fragment的控件中,则应该传递getChildFragmentManager()。只要记住ViewPager内的Fragments是当前组件的子Fragment这个原则即可
你不需要考虑在“内存重启”的情况下,去恢复的Fragments的问题,因为FragmentPagerAdapter已经帮我们处理

6、单Activity+多Fragment

7、DialogFragment

boolean mIsLargeLa

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值