【发布时间】:2015-12-15 19:27:53
【问题描述】:
我目前正在使用 Picasso 从服务器端加载图像并将其保存在 Android 的内部存储中。 我正在使用以下代码从服务器端加载图像:
Handler uiHandler = new Handler(Looper.getMainLooper());
uiHandler.post(new Runnable() {
@Override
public void run() {
System.out.println("start run.....");
Picasso.with(context)
.load(url)
.resize(10, 10)
.into(new Target() {
@Override
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
System.out.println("start picasso....");
if (bitmap != null) {
// save image in internal memory
String directory = saveToInternalStorage(bitmap, name);
System.out.println(directory);
} else
System.out.println("image return is null.....");
}
@Override
public void onBitmapFailed(Drawable errorDrawable) {
System.out.println("Failure in loading photo from server: " + name);
}
@Override
public void onPrepareLoad(Drawable placeHolderDrawable) {
}
});
以及以下代码将图像保存在内存中:
private String saveToInternalStorage(Bitmap bitmapImage, String imageName){
System.out.println("start saving image......");
ContextWrapper cw = new ContextWrapper(context);
File directory = cw.getDir("imageDir", Context.MODE_PRIVATE);
// Create imageDir
File mypath=new File(directory,imageName);
FileOutputStream fos = null;
try {
fos = new FileOutputStream(mypath);
// Use the compress method on the BitMap object to write image to the OutputStream
boolean save=bitmapImage.compress(Bitmap.CompressFormat.PNG, 2, fos);
System.out.println(save);
fos.flush();
fos.close();
} catch (Exception e) {
System.out.println("Error in saving photo "+e.toString());
}
System.out.println("Image is successfully saved..."+directory.getAbsolutePath());
return directory.getAbsolutePath();
}
但是,我的问题在于垃圾收集。毕加索根本没有启动,即使我没有收到毕加索的任何失败消息,我也面临以下错误:
D/dalvikvm:GC_CONCURRENT释放434K,11%释放12767K/14215K,暂停14ms+25ms,共118ms
如果有人建议我任何解决方案来避免此错误,我将不胜感激。
【问题讨论】:
标签: android garbage-collection picasso