Jon*_*son 5 sqlite android android-asynctask picasso
这是一个具有画廊背景的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链接.
或者直接将图像缓存到光盘?
也许有一种好方法可以将图像保存到 SD 卡,并用 SD 卡上的图像位置替换 HTTP 链接。
或者直接将图像缓存到光盘上?
这正是我要做的。查看SD上的缓存是否存在该图像,如果存在,则使用它,如果不存在,则将其下载到缓存并从缓存中使用它。但您需要注意 TTL-s。
| 归档时间: |
|
| 查看次数: |
905 次 |
| 最近记录: |