finalBitmap 使用过程中。。没有网络获取不到SD卡图片的数据...

techstan 发布于 2013/03/25 16:11
阅读 2K+
收藏 0

@michaely 你好,想跟你请教个问题:

    我是通过json获取图片的信息...这个操作放在异步中...获取到数据通过List集合保存.....然后使用示例代码中的

fb=FinalBitmap.create(Photo_Album.this,Environment.getExternalStorageDirectory().getAbsolutePath()+File.separator+"android"+File.separator+"CacheImage");

fb.display(iv, albumList.get(position).getPic());

当第一次加载的时候...图片被存放在SD卡上...当第二次没有网络的情况下...就不能读取SD上图片的数据??

还有就是我想在其他Activity直接读取使用finalBitmap下载的图片??请问又如何解决??谢谢了

    

以下是问题补充:

@techstan:数据已经下载到了本地......但是就是获取不到..... 程序的结构大概就是这样的... 用GridView显示数据...然后利用异步解析服务器图片的网址,将网址封装到List集合中. 在异步的onPostExecute方法中绑定数据.. if(result!=null){ ImageAdapter ia = new ImageAdapter(); mGridView.setAdapter(ia); mGridView.invalidateViews(); } else{ Toast.makeText(Photo_Album.this, "数据为空", 1).show(); } 图片适配器 class ImageAdapter extends BaseAdapter{ FinalBitmap fb; ImageView iv; TextView tv; public ImageAdapter(){ fb=FinalBitmap.create(Photo_Album.this,Environment.getExternalStorageDirectory().getAbsolutePath()+File.separator+"android"+File.separator+"CacheImage"); } 不知道是哪一步出了问题...我不用异步直接用网址的方式可以获得缓存的数据...但是使用异步就不行了...是不是哪一步出现了错误?谢谢了 (2013/03/25 22:20)
加载中
0
理工男海哥
理工男海哥

没有网的情况下,只要下载到本地了(不要清楚缓存),就可以获取,无需网络。

但是你获取不到,不知道什么原因。

直接读取缓存下的bitmap,你可以直接参考

finalBitmap的 doDisplay方法中的

bitmap = mImageCache.getBitmapFromMemCache(uri);

然后自己添加一个方法即可。

0
c
chenmy

看了下finalBitmap.java里面的逻辑。

private void doDisplay(View imageView, String uri, BitmapDisplayConfig displayConfig);方法里面只是对内存做了检查是否有图片,没有就再下去载,而没有对SD做检查。是个大bug吧?建议在该方法里面的:

if (mImageCache != null) {
     bitmap = mImageCache.getBitmapFromMemoryCache(uri);
}

换成:

if (mImageCache != null) {
      bitmap = getBitmapFromCache(uri);
}

并且:

public Bitmap getBitmapFromCache(String key){

    Bitmap bitmap  = getBitmapFromMemoryCache(key);
    if(bitmap == null)
        bitmap = getBitmapFromDiskCache(key);
    if(mImageCache != null && bitmap != null){
        mImageCache.addToMemoryCache(key, bitmap);
    }

    return bitmap;



没有经过测试,楼主可以测试看看。

techstan
techstan
谢谢了!
返回顶部
顶部