Loading Image using picasso inside AsyncTask

后端 未结 3 1607
情话喂你
情话喂你 2020-12-20 10:02

I\'m using picasso to load an image as a background for my activity, I want to use an AsyncTask, while the image is loading, when done the progress bar dismisses to give bet

相关标签:
3条回答
  • 2020-12-20 10:09

    You get error because picasso's load function is already async. So you can do this in UI thread like:

    public void functionCalledFromUIThread(){
    
    mProgressDialog = new ProgressDialog(MainActivity.this);
    mProgressDialog.setMessage("Chargement...");
    mProgressDialog.setIndeterminate(false);
    mProgressDialog.show();
    Picasso.with(MainActivity.this).load("http://tv2.orangeadd.com/mediacenter-data/ofc__bg_home.jpg").into(background,new com.squareup.picasso.Callback() {
                 @Override
                 public void onSuccess() {
                    mProgressDialog.dismiss();
                 }
    
                 @Override
                 public void onError() {
                    mProgressDialog.dismiss();
                 }
             }); 
    }
    
    0 讨论(0)
  • 2020-12-20 10:16
    public void loadImageInBackground() {
    
            mProgressDialog = new ProgressDialog(MainActivity.this);
            mProgressDialog.setMessage("Chargement...");
            mProgressDialog.setIndeterminate(false);
    
            Target target = new Target() {
    
                @Override
                public void onPrepareLoad(Drawable arg0) {
    
                    mProgressDialog.show();
                }
    
                @Override
                public void onBitmapLoaded(Bitmap arg0, LoadedFrom arg1) {
    
                    background.setImageBitmap(arg0);
                    mProgressDialog.dismiss();
                }
    
                @Override
                public void onBitmapFailed(Drawable arg0) {
                    // TODO Auto-generated method stub
                    mProgressDialog.dismiss();
                }
            };
    
            Picasso.with(MainActivity.this)
                    .load("http://tv2.orangeadd.com/mediacenter-data/ofc__bg_home.jpg")
                    .into(target);
        }
    
    0 讨论(0)
  • 2020-12-20 10:19

    My guess is that the error is because you are trying to modify an UI element (dialog) inside a background thread, which is not possible.

    You don't need an AsyncTask for this, since Picasso already does the decoding in background.

    0 讨论(0)
提交回复
热议问题