Glisse affirmer: java.lang.IllegalArgumentException: Vous devez appeler cette méthode sur le thread principal

Quelqu'un a utilisé le levier pour extraire des images à partir d'un thread d'arrière-plan? Je reçois cette assertion:

java.lang.IllegalArgumentException: You must call this method on the main thread

mais en fonction de ce fil, cela devrait fonctionner:

https://github.com/bumptech/glide/issues/310

Encore, je ne peux pas le faire fonctionner, à moins que je l'appelle depuis le thread principal.

Ici, c'est ce que j'essaie de faire depuis le thread principal:

    Glide.get(mContext);
    loadUserImage(userImageUrl);

    //wait 5 seconds before trying again
    int imageLoadingTimeOut = mContext.getResources().getInteger(R.integer.image_loading_time_out);
    if (imageLoadingTimeOut > 0) {
        new Timer().schedule(new TimerTask() {
            @Override
            public void run() {
                if (!mUserImageLoaded) {
                    loadUserImage(userImageUrl);
                }
            }
        }, imageLoadingTimeOut);
    }
}

et la loadUserImage:

private boolean mUserImageLoaded = false;

private void loadUserImage(String userImageUrl) {

    if (userImageUrl != null && !userImageUrl.isEmpty() && !mUserImageLoaded) {
        Glide.with(mContext).using(Cloudinary.getUrlLoader(mContext)).load(userImageUrl).crossFade().listener(new RequestListener<String, GlideDrawable>() {

            @Override
            public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) {
                return false;
            }

            @Override
            public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
                mImageMessageContent.invalidate();
                mUserImageLoaded = true;
                return false;
            }
        }).into(mImageMessageContent);

    } else {
        mImageMessageContent.setVisibility(View.GONE);
    }
}

et mContext est juste l'activité pointeur "this".

De toute façon, je peux utiliser Glide à partir d'un thread différent de main?

n'appelez pas la méthode de chargement dans le thread séparé ou de faire ce thread exécuter onUi fil
pouvez-vous donner plus de détails? Comment puis-je faire ne pas s'exécuter sur un onUI fil? J'ai besoin de passer l'ImageView pointeur de glisser. Ce pointeur est récupéré à partir de l'INTERFACE principale de thread.

OriginalL'auteur gmmo | 2016-02-26