3
我有一個Realm數據庫與圖像URL
s,我需要下載這些圖像在ExternalCacheDir
。現在這裏是問題:假設我有三個圖像:ar11.jpg
,ar12.jpg
,ar13.jpg
。一旦我的代碼被執行,我在高速緩存目錄中獲得3 jpg圖像,並帶有上述名稱,但是所有三個圖像都是最後一個圖像的副本,即ar13.jpg
,其名稱爲ar11
,ar12
,ar13
。使用Picasso下載圖像會在緩存中創建不正確的圖像,可能會修復?
這裏是我的代碼:
private void downloadImage()
{
RealmResults<ARDatabase> results = mRealm.where(ARDatabase.class).findAll();
for(ARDatabase x:results)
{
if(!x.getIsDownloaded())
{
mdataCollection.add(new DownLoadList(x.getUrlImg(),x.getUid()));
}
}
for(DownLoadList i:mdataCollection)
{
Log.e("Link",""+i.getImageUrl());
Picasso.with(getApplicationContext()).load(i.getImageUrl()).into(target);
}
}
private Target target = new Target() {
@Override
public void onBitmapLoaded(final Bitmap bitmap, Picasso.LoadedFrom from)
{
Log.e("PICASSO","SUCCESSFUL");
new Thread(new Runnable() {
@Override
public void run() {
File sd = getExternalCacheDir();
File folder = new File(sd, "/arproject/");
if (!folder.exists()) {
if (!folder.mkdir()) {
Log.e("ERROR", "Cannot create a directory!");
} else {
folder.mkdirs();
}
}
//File[] fileName = {new File(folder, "one.jpg"), new File(folder, "two.jpg")};
for (DownLoadList i:mdataCollection)
{
File fileName = new File(folder,i.getUid().toLowerCase()+".jpg");
if (!fileName.exists()) {
try {
fileName.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
else
{
try {
FileOutputStream outputStream = new FileOutputStream(String.valueOf(fileName));
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, outputStream);
outputStream.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}).start();
}
@Override
public void onBitmapFailed(Drawable errorDrawable)
{
Log.e("PICASSO","FAILED"+errorDrawable.toString());
}
@Override
public void onPrepareLoad(Drawable placeHolderDrawable) {
}
};
了可能是造成這種冗餘,以及如何解決它?
@superman,這是否對你的工作?如果是,請接受它。 – Sangharsh