我在我的android项目中使用滑动库来获取和显示图像。 之前我使用的是2.0.5版,面临渲染问题。问题是错误的图像呈现。我已将库更新到3.3版本,它现在崩溃,出现以下异常。
14-Sep-2014 08:41:31 PM java.lang.IllegalArgumentException:
You cannot start a load for a destroyed activity
at com.bumptech.glide.manager.RequestManagerRetriever.get(RequestManagerRetriever.java:63)
at com.bumptech.glide.manager.RequestManagerRetriever.get(RequestManagerRetriever.java:29)
at com.bumptech.glide.Glide.with(Glide.java:537)
at com.miamiheat.common.MHImageDownloadWrapper.loadImage(MHImageDownloadWrapper.java:12)
at com.miamiheat.ui.module.MHWallpaperModule.setWallpaperViewData(MHWallpaperModule.java:234)
at com.miamiheat.ui.module.MHWallpaperModule.taskManagerResponseCallback(MHWallpaperModule.java:257)
at com.miamiheat.service.taskmanager.MHWallpaperTaskManager.asyncResultCallback(MHWallpaperTaskManager.java:133)
at com.miamiheat.service.framework.MHAsyncServiceTask.onPostExecute(MHAsyncServiceTask.java:191)
at android.os.AsyncTask.finish(AsyncTask.java:631)
at android.os.AsyncTask.access$600(AsyncTask.java:177)
at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:176)
at android.app.ActivityThread.main(ActivityThread.java:5419)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862)
at dalvik.system.NativeStart.main(Native Method)
无论如何都要取消活动销毁时的图像下载请求。
答案 0 :(得分:6)
Glide.clear() sometimes doesn't help for me. Pass application context to Glide.with(...) using getApplicationContext() method.
答案 1 :(得分:4)
您始终可以使用Glide.clear()
取消加载。
但是,在您的活动被销毁后尝试启动新加载时会发生该异常。在异步获取某些数据后是否开始加载图像?如果是这样,您可能希望在活动停止时取消异步提取,或者至少在提取完成并且活动被销毁时忽略结果。
答案 2 :(得分:3)
您必须在方法Glide.with(getActivity()).pauseRequests()
或Glide.get(getActivity()).clearMemory()
中致电onDestroy()
或onDestroyView()
,然后将其删除。
答案 3 :(得分:0)
在Glade调用之前添加此内容
if(!this.isDestroyed()){
Glide.with(activity).load(...)
....
}
答案 4 :(得分:0)
确保在 view
方法的开头清除 onBindViewHolder
。
仅此而已。
@Override
public void onBindViewHolder(final Adapter_Feed_Msg.ViewHolder holder, final int position) {
Glide.with(mContext).clear(holder.ProfileImage);
Glide.with(mContext).clear(holder.postImage);
.
.
.
}