当前位置: 代码迷 >> 综合 >> 实战 使用okgo 怎么在没网络时 ,显示上一次加载的数据
  详细解决方案

实战 使用okgo 怎么在没网络时 ,显示上一次加载的数据

热度:85   发布时间:2023-10-20 14:50:54.0

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() {@Overridepublic void onSuccess(Response<String> response) {message.what = POST_SUCCESS;message.obj = response.body();token_pass(message.obj.toString());handler.sendMessage(message);}@Overridepublic void onError(Response<String> response) {super.onError(response);message.what = POST_FAILED;message.obj = POST_SUCCESS;handler.sendMessage(message);}@Overridepublic 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)  这两个属:

  就这些,不懂的 可以私聊我

 

 

 

 

 

 

  相关解决方案