Android 在片段中处理Web服务调用和缓存数据
你好,很抱歉发了这么长的帖子。这更像是一个设计决策,而不是其他任何事情。我有一个包含4个片段的活动。现在我通过幻灯片切换片段。 每个片段调用一个webservices,并获得一个针对AsyncTask的JSONObject结果。我正在寻找一个必须缓存每个JSONObject结果的结构 对于每个片段。当用户在片段之间切换时,它会检查一定的时间是否已过期,并相应地采取行动 -如果缓存时间已过期,请重新加载网络请求。 -如果不是,则使用缓存的JSONObject结果并向用户显示 这意味着如果我有一个6小时的到期时间,或者更确切地说,来自后端的数据每6小时更新一次,那么我应该只通过asynctask从webservice请求 每6小时一次,其他时间只使用缓存值 我当前的实现 1.通过扩展应用程序类,第一次为每个片段加载一组全局布尔变量Android 在片段中处理Web服务调用和缓存数据,android,Android,你好,很抱歉发了这么长的帖子。这更像是一个设计决策,而不是其他任何事情。我有一个包含4个片段的活动。现在我通过幻灯片切换片段。 每个片段调用一个webservices,并获得一个针对AsyncTask的JSONObject结果。我正在寻找一个必须缓存每个JSONObject结果的结构 对于每个片段。当用户在片段之间切换时,它会检查一定的时间是否已过期,并相应地采取行动 -如果缓存时间已过期,请重新加载网络请求。 -如果不是,则使用缓存的JSONObject结果并向用户显示 这意味着如果我有一个6
public class MyApp extends Application {
private boolean First_load_frag1 = true;
private boolean First_load_frag2= true;
public void setLoadFrag1(boolean value){
First_load_frag1 = value;
}
public boolean getLoadFrag1(){
return First_load_frag1;
}
}
Calendar cal = Calendar.getInstance();
int mins = (int) ((cal.getTimeInMillis()/MINUTE_MILLIS) - (cached_timer/MINUTE_MILLIS);
if(mins > 180){
Toast.makeText(getActivity(), "on resume refresh data", Toast.LENGTH_LONG).show();
requestService(); //this sends a request to the webservice
} else {
cached_result = manager.getCachedJSONResult(CACHED_RESULT );
if(cached_result != null){
Toast.makeText(getActivity(), "on resume cached data", Toast.LENGTH_LONG).show();
loadCachedResult(cached_result);
}
}
}
在我看来,这是一种处理这种情况的混乱方式。考虑到应用程序崩溃和活动生命周期,这是一种很好的解决方案吗?或者有一种更优雅的方法可以实现这一点吗?我们将非常感谢您的每一点意见。谢谢1.首先,您需要创建用于保存片段数据的数据结构