gpt4 book ai didi

java - 回调怪异行为(Android、Picasso 库)

转载 作者:太空狗 更新时间:2023-10-29 15:38:24 26 4
gpt4 key购买 nike

我正在使用 Picasso 库来管理我的图像上传和缓存。当我尝试执行此代码时:

    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 回调。只有当我关闭 Activity (返回)并重新打开它时,我才能看到图像(进入 onBitmapLoaded)。

但是,如果我通过将一些 Toast 消息添加到 onPrepareLoad 回调中来更改我的代码,则一切正常。这是完整的代码:

    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)
{
}
});

为什么 Toast 让它起作用?有什么问题吗?

最佳答案

我通过将 Target 实例声明为类成员来解决这个问题。然后初始化它。像这样:

    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);

关于java - 回调怪异行为(Android、Picasso 库),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23843055/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com