小编Jon*_*son的帖子

在DB中访问Android图像

这是一个具有画廊背景的APP.使用REST我收到(Volley)JSON,其中包含有关地点和图片链接的信息.因为有大约60个地方,所以PICASSO的缓存形式是不够的.数据存储在DB中,所以我的想法是将图像插入到数据库中byte stream.它完成了,但不是很好,如下所示.代码里面AsyncTask.

@Override
protected Bitmap doInBackground(Void... params) {
    try {
        return Picasso.with(context)
                .load(site.getImageURL())
                .get();

    } catch (IOException e) {
        e.printStackTrace();
    }
    return null;
}

@Override
protected void onPostExecute(Bitmap bitmap) {
    super.onPostExecute(bitmap);

    ByteArrayOutputStream stream = new ByteArrayOutputStream();
    try {
        bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);
    } catch (Exception e) {
        e.printStackTrace();
    }
    site.setImageBytes(stream.toByteArray());

    db.openForWrite();
    db.updateSite(site.getId(), site);
    db.close();
}
Run Code Online (Sandbox Code Playgroud)

我的问题是如何提高效率,你知道更好的方法吗?我试图让callbackPicasso将图像添加到数据库中onSuccess,但它需要将视图作为第一个参数.

也许有一种很好的方法可以将图像保存到SD卡,并用SD卡上的图像位置替换HTTP链接.

或者直接将图像缓存到光盘?

sqlite android android-asynctask picasso

5
推荐指数
1
解决办法
905
查看次数

标签 统计

android ×1

android-asynctask ×1

picasso ×1

sqlite ×1