一个Activity里面多个Fragment使用的情景
发布网友
发布时间:2023-10-21 00:02
我来回答
共1个回答
热心网友
时间:2023-11-22 04:51
最近在公司做了一个项目是一个Activity里面多个Fragment使用的情景,如下图所示:
1、在这里我的项目高概率会再次使用当前的Fragment,我使用的是使用show(),hide(),可以提高性能。
show(),hide()最终是让Fragment的ViewsetVisibility(true还是false),不会调用生命周期;
replace()的话会销毁视图,即调用onDestoryView、onCreateView等一系列生命周期;
add()和replace()不要在同一个阶级的FragmentManager里混搭使用。
注意:如果你的app有大量图片,这时更好的方式可能是replace,配合你的图片框架在Fragment视图销毁时,回收其图片所占的内存。
2、fragment之间的通信我用的是EventBus,但是当你在一个fragment跳转到一个还未初始化的fragment时,未初始化的fragment里面eventBus 的方法是不走的,接受不到信息的。你可以oncreate方法里处理一下。
3、当某个fragment要求每次页面可见时,该页面会刷新数据的时候,由于我使用的是show(),hide(),此时生命周期不在重走,在onResume或者setUserVisibleHint方法都不会调用,解决方法是在 切换fragment的时候,让你想要刷新的fragment调用frag.setUserVisibleHint(true); 这个时候Fragment类的重写的setUserVisibleHint()方法就会被调用。