Has anyone used Glide to fetch images from a background thread? I keep getting this assert:
java.lang.IllegalArgumentException: You must call this method on the main thread
but according to this thread, it should work:
https://github.com/bumptech/glide/issues/310
Yet, I cannot get it to work, unless I call it from the main thread.
Here's is what I am trying to do from the main thread:
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); } }
and the 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); } }
and mContext is just the activity "this" pointer.
Anyway, can I use Glide from a thread different than main?