项目中通过ViewPager+多Fragment实现多页面数据展示,项目测试中发现,多个Fragment获取无法获取到服务端返回的数据,通过查看log,发现是由于在同一秒中请求同一个接口多次,服务端对时间戳做出限制,在同一秒中不可对同意接口同时访问,否则服务端做出限制并返回错误code,通过同事指点:ViewPager有对数据进行预加载功能。通过查阅资料取消ViewPager预加载解决办法如下:
BaseFragment.java
onActivityCreated方法:
@Override
public void onActivityCreated(Bundle bundle) {
if (getUserVisibleHint()) {
initData(bundle);
}
super.onActivityCreated(bundle);
}
方法是上一个Fragment加载数据,并且加载下一个Fragment未获取服务端数据的初始化View,所以在切换到下一个Fragment后,会看到异步加载网络数据的过程(先加载未设置数据view,后能获取到服务端数据),解决了同一个接口,在同一秒内访问的问题。