Java 回调怪异行为(安卓、毕加索图书馆)
我使用毕加索图书馆来管理我的图像上传和缓存。当我尝试执行此代码时:Java 回调怪异行为(安卓、毕加索图书馆),java,android,callback,picasso,Java,Android,Callback,Picasso,我使用毕加索图书馆来管理我的图像上传和缓存。当我尝试执行此代码时: Picasso.with(this) .load(AppServer.getImageUrl() + "/" + eventInfo.getImageName()) .placeholder(R.drawable.calendar) .error(R.drawable.calendar) .into(new Target() {
Picasso.with(this)
.load(AppServer.getImageUrl() + "/" + eventInfo.getImageName())
.placeholder(R.drawable.calendar)
.error(R.drawable.calendar)
.into(new Target()
{
@Override
public void onPrepareLoad(Drawable drawable)
{
}
@Override
public void onBitmapLoaded(Bitmap photo, Picasso.LoadedFrom from)
{
cropImage(photo); //not getting here
}
@Override
public void onBitmapFailed(Drawable arg0)
{
}
});
我没有在onBitmapLoaded
回调中输入int。只有当我关闭活动(返回)并重新打开它时,我才会看到图像(进入onBitmapLoaded
)
但是,如果我通过在onPrepareLoad
回调中添加一些Toast
消息来更改代码,那么一切都会正常工作。以下是完整的代码:
Picasso.with(this)
.load(AppServer.getImageUrl() + "/" + eventInfo.getImageName())
.placeholder(R.drawable.calendar)
.error(R.drawable.calendar)
.into(new Target()
{
@Override
public void onPrepareLoad(Drawable drawable)
{
Toast.makeText(thisActivity, "message", Toast.LENGTH_LONG).show();
}
@Override
public void onBitmapLoaded(Bitmap photo, Picasso.LoadedFrom from)
{
cropImage(photo);
}
@Override
public void onBitmapFailed(Drawable arg0)
{
}
});
为什么吐司能起作用?有什么问题吗?我通过将一个
目标
实例声明为类成员解决了这个问题。然后草签。像这样:
target = new Target()
{
@Override
public void onPrepareLoad(Drawable drawable)
{
}
@Override
public void onBitmapLoaded(Bitmap photo, Picasso.LoadedFrom from)
{
cropEventImage(photo);
}
@Override
public void onBitmapFailed(Drawable arg0)
{
}
};
Picasso.with(this)
.load(AppServer.getImageUrl() + "/" + eventInfo.getImageName())
.placeholder(R.drawable.calendar)
.error(R.drawable.calendar)
.into(target);
可能是onbitmapfailed正在调用它不是,调试器没有得到它。原因是由于毕加索持有弱引用,因此正在对目标进行垃圾收集。