KJFrame框架对Http请求和sqlite的ORM封装的挺简单实用的,所以前几天的hackathon比赛就用了这个框架,不过最后用KJHttp进行请求后,发现onSuccess(Bitmap t)接口似乎不会调用,最后也没测试时间了也就没解决这个问题了。
回过头来看看KJFram的源码发现
@Override
protected void deliverResponse(Map<String, String> headers, byte[] response) {
    if (mCallback != null) {
        mCallback.onSuccess(headers, response);
    }
}和volley相同的方式调用
HttpCallBack的public void onSuccess(Map<String, String> headers, byte[] t) {
    onSuccess(t);
}
public void onSuccess(byte[] t) {
    if (t != null) {
        onSuccess(new String(t));
    }
}
public void onSuccess(String t) {}
public void onSuccess(Bitmap t) {}很明显,这里你就算重写了
onSuccess(Bitmap t)也不会调用。
看过源码后才发现有个KJBitmap类专门用来处理图片请求,并且使用的是BitmapCallBack
/**
    * 真正去加载一个图片
    */
   private void doDisplay(final View imageView, final String imageUrl,
           int width, int height, final Drawable loadBitmap,
           final Drawable errorBitmap, final BitmapCallBack callback) {
       checkViewExist(imageView);
       imageView.setTag(imageUrl);
       BitmapCallBack mCallback = new BitmapCallBack() {
           @Override
           public void onPreLoad() {
               if (callback != null) {
                   callback.onPreLoad();
               }
           }
           @Override
           public void onSuccess(Bitmap bitmap) {
               if (imageUrl.equals(imageView.getTag())) {
                   doSuccess(imageView, bitmap, loadBitmap);
                   if (callback != null) {
                       callback.onSuccess(bitmap);
                   }
               }
           }
           @Override
           public void onFailure(Exception e) {
               doFailure(imageView, errorBitmap);
               if (callback != null) {
                   callback.onFailure(e);
               }
           }
           @Override
           public void onFinish() {
               try {
                   doLoadingViews.remove(imageView);
               } catch (Exception e) {
               }
               if (callback != null) {
                   callback.onFinish();
               }
           }
       };
       if (imageUrl.startsWith("http")) {
           displayer.get(imageUrl, width, height, mCallback);
       } else {
           new DiskImageRequest().load(imageUrl, width, width, mCallback);
       }
   }
最后倒是想吐槽一下,把HttpCallBack里得到的byte[]数据转换成Bitmap调用onSucess(Bitmap t)不行吗。。