我必须在每个页面中进行网络调用,这是viewpager中的一个片段。
问题是viewpager调用具有网络请求的相邻片段的onCreateView()(我正在使用改造),这使得在进行网络请求后仍然可以看到改进请求的进度对话框。
viewPager.setOffscreenPageLimit(1);
Android允许setOffScreenPageLimit中的最小值为1。
我也用过
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if(isVisible()){
if(isVisibleToUser){
Log.d("MyTag","TopFramgnet:My Fragment is visible");
}else{
Log.d("MyTag","TopFramgnet:My Fragment is not visible");
}
}
}
但每次切换到片段时都不会调用此方法。 那么,如何有效地进行网络呼叫呢?
第二个问题是如何重新加载片段,这样如果我改变了某些东西,它可以通过再次发出网络请求来重新加载它的视图?
请指导我,我找不到能解决问题的任何事情。
答案 0 :(得分:0)
我认为你需要在改造中启用缓存。例如
RestAdapter.Builder builder= new RestAdapter.Builder()
.setRequestInterceptor(new RequestInterceptor() {
@Override
public void intercept(RequestFacade request) {
request.addHeader("Accept", "application/json;versions=1");
if (MyApplicationUtils.isNetworkAvailable(context)) {
int maxAge = 60; // read from cache for 1 minute
request.addHeader("Cache-Control", "public, max-age=" + maxAge);
} else {
int maxStale = 60 * 60 * 24 * 28; // tolerate 4-weeks stale
request.addHeader("Cache-Control",
"public, only-if-cached, max-stale=" + maxStale);
}
}
});
Can Retrofit with OKHttp use cache data when offline
之后,如果数据相当新,则从缓存中获取数据。