Я пытаюсь получить растровое изображение с URL-адреса, отправленного в Picasso в классе, который расширяет AsyncTask. Это выглядит следующим образом:Получить растровое изображение с Picasso ILLEGAL_STATE_EXCEPTION
public class MoviesTask extends AsyncTask<String, Void, String[]> {
// Target object for Bitmap convert
private Target loadTarget;
private Bitmap mBitmap;
private byte[] img;
public void getBitmap(String url){
if (loadTarget == null)
loadTarget = new Target() {
@Override
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
mBitmap = bitmap;
}
@Override
public void onBitmapFailed(Drawable errorDrawable) {
}
@Override
public void onPrepareLoad(Drawable placeHolderDrawable) {
}
};
Picasso.Builder builder = new Picasso.Builder(mContext);
builder.listener(new Picasso.Listener() {
@Override
public void onImageLoadFailed(Picasso picasso, Uri uri, Exception exception) {
exception.printStackTrace();
}
});
builder.build().with(mContext).load(url).into(loadTarget);
}
Исключение, я получаю: Вызванные: java.lang.IllegalStateException: Метод вызов должен происходить от основного потока.
Не могу понять, в чем проблема с моим кодом, и надеемся, что кто-нибудь сможет мне помочь с этим.
Сообщения об исключении говорит все, что вам нужно вызвать методы асинхронного Пикасса, чтобы избежать сетевых вызовов на UI потоке. –
На самом деле, совершенно наоборот, исключение говорит о том, что 'in' следует вызывать из потока пользовательского интерфейса. Это странное решение. – Maxim