用fragment+viewpager架构,当划了几次之后,再划回来,会重新加载布局,重新获取数据,这样整个程序很卡,并且占用太多的网络资源。
viewpager默认会加载和当前页面相连的两个fragment,会销毁相邻第三个页面的view,再次调用是会重新oncreateview和onactivityreate。
优化操作如下:
private View rootView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
if (rootView == null) {
rootView = initView(inflater); //初始化布局
}
return rootView;
}
@Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); if (!hasInitData) { initData(); hasInitData = true; } }
@Override public void onDestroyView() { super.onDestroyView(); ((ViewGroup) rootView.getParent()).removeView(rootView); //移除 否则onCreateView会报错 }加入rootView,缓存加载后的view,如果有就不重新加载数据。
加入判断是否已经加载数据完成的标志变量,如果已经加载了数据,就不重新加载数据。