使用Picasso ILLEGAL_STATE_EXCEPTION获取位图

时间:2015-08-15 10:35:32

标签: android bitmap android-asynctask picasso

我尝试从一个扩展AsyncTask的类中发送给Picasso的url获取一个Bitmap。 它看起来像这样:

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:方法调用应该从主线程发生。

无法真正理解我的代码有什么问题,希望有人能帮助我解决这个问题。

0 个答案:

没有答案