1. 首先 在自己的 请求内添加 cacheKey(),其中 act 接口名称
public void httpUtils(String act, HttpParams httpParams) {
final Message message = new Message();
OkGo.<String>post(UrlTools.BASE_URL + act).headers("token", UserData.getUserToken(context)).cacheKey(act).tag(context + "_" + POST_SUCCESS).params(httpParams).execute(new StringCallback() {
@Override
public void onSuccess(Response<String> response) {
message.what = POST_SUCCESS;
message.obj = response.body();
token_pass(message.obj.toString());
handler.sendMessage(message);
}
@Override
public void onError(Response<String> response) {
super.onError(response);
message.what = POST_FAILED;
message.obj = POST_SUCCESS;
handler.sendMessage(message);
}
@Override
public void onStart(Request<String, ? extends Request> request) {
super.onStart(request);
}
});
}
2. 在需要用到缓存数据的界面
private void get_save_banner() { //下面的 UrlTools.TIKU_BANNER 就是 步骤1 内的 act
CacheEntity<?> bannerdata = CacheManager.getInstance().get(UrlTools.TIKU_BANNER); if (!Utils.isEmpty(bannerdata + "")) { // get_banner()方法 就是正常接收 网络数据的 方法 get_banner(bannerdata.getData().toString()); } }
3.将get_save_banner()方法, 在 界面的 调用网络请求方法之前调用
4. 如果界面有图片,那么图片加载框架 也有添加 缓存机制
我用的是 imageloder ,设置全局属性的时候 设置如下:
public static final DisplayImageOptions OPTIONS_NORMAL = new DisplayImageOptions.Builder()
.cacheOnDisk(true).cacheInMemory(true)
.imageScaleType(ImageScaleType.EXACTLY)
.showImageOnLoading(R.drawable.ig_holder)
.bitmapConfig(Bitmap.Config.RGB_565)
.considerExifParams(true)
.delayBeforeLoading(300)
.build();
其中主要的就是添加 .cacheOnDisk(true).cacheInMemory(true) 这两个属:
就这些,不懂的 可以私聊我