Android最新的Fragment懒加载解决方案
网上大多帖子都是在 setUserVisibleHint 中进行数据懒加载的,但是目前发现这个方法已经失效了,Google已经废弃了,鄙人不才,新发现了一种方式,现在简单描述一下。
由于,FragmentPageAdapter 在原来的基础上新加了一个整型的枚举参数,具体这个参数的作用是啥,大家自行了解,以下就是自定义Lazy Fragment的代码和方法。
/**
* 懒加载的Fragment
*/
public abstract class LazyFragment extends Fragment{
private boolean isViewCreated;
private boolean isDataLoaded;
protected FragmentActivity context;
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
context = getActivity();
}
@Override
public void onDestroy() {
super.onDestroy();
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
this.isViewCreated = true;
}
@Override
public void onResume() {
super.onResume();
if(isViewCreated && !isDataLoaded){
initialLoadData();
}
}
/**
* 初始化加载数据
*/
public abstract void initialLoadData();
/**
* 数据记载成功就停止下次的加载
*/
public void initialLoadDataSuccess(){
this.isDataLoaded = true;
}
}
在使用的地方记得把FragmentPageAdapter中的整形枚举参数改为FragmentPagerAdapter.BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT
就OK了!!!
大家有什么新的方法和发现,都可以给我留言。