简介 目录 评价 推荐
  • 我斑愿称你最强 2019-10-31
    请问有没有专门对缓存讲解的课程?

    看源码了解即可,

    1回答·789浏览
  • 精慕门3101338 2018-08-18
    源码???
    0回答·1033浏览
  • 慕粉3380826 2018-01-16
    采样值的计算和计算缩放值不一样吗????

    是的一样的

    1回答·1378浏览
  • 慕尼黑6302034 2018-01-06
    三级缓存校验失效问题
    2回答·1275浏览
  • Omooo 2017-12-19
    LruCache写完之后没效果呀?
    已采纳 慕侠74744 的回答

     @Override
               public void onResponse(Call call, Response response) throws IOException {
                   Log.i(TAG, "onResponse");
                   Bitmap bitmap = BitmapFactory.decodeStream(response.body().byteStream());
                   if (bitmap != null) {
                       putBitmapToCache(bitmap, url);
                       Log.i(TAG, "bitmap不为空");
                   } else {
                       Log.i(TAG, "bitmap为空");
                   }
               }
           });
     上面这个方法的执行时异步的

    然而在首次加载图片的时候bitmap == null  会调用系统的OKHTTP去下载图片(这里需要你断点一下是不是真的下载好了),假设下载成功了。但是在下载成功之前代码已经执行到了 view.setImageBitmap(getBitmapFromCache(url)); 这时候图片还没有下载好

     /**
        * 用来加载网络图片
        * @param view
        * @param url
        */
       public void displayImage(ImageView view, String url) {
           Bitmap bitmap = getBitmapFromCache(url);
           if (bitmap != null) {
               Log.i(TAG, "displayImage bitmap!=null");
               view.setImageBitmap(bitmap);
           } else {
               Log.i(TAG, "displayImage bitmap==null");
               downloadImage(view,url);
               view.setImageBitmap(getBitmapFromCache(url));
           }
       }





    正确的解决是当图片下载完成了,直接加载给view


     @Override
               public void onResponse(Call call, Response response) throws IOException {
                   Log.i(TAG, "onResponse");
                   Bitmap bitmap = BitmapFactory.decodeStream(response.body().byteStream());
                   if (bitmap != null) {
                       putBitmapToCache(bitmap, url);

                      displayImage(ImageView view, String url);        

                      Log.i(TAG, "bitmap不为空");

                   } else {
                       Log.i(TAG, "bitmap为空");
                   }
               }
           });

    这样就可以了

    2回答·1531浏览
  • 慕村3338350 2017-12-07
    老师讲的很好

    真的不懂

    1回答·1123浏览
  • 慕村3338350 2017-12-07
    CommonOkHttpClient

    不懂啊

    3回答·1378浏览
数据加载中...
开始学习 免费