繁体   English   中英

使用Glide库渲染的图像不正确

[英]Incorrect image rendered with Glide library

我在我的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)

反正是否取消活动销毁的图像下载请求。

Glide.clear()有时对我没有帮助。 使用getApplicationContext()方法将应用程序上下文传递给Glide.with(...)。

您始终可以使用Glide.clear()来取消加载。

但是,在您的活动被销毁后尝试启动新加载时会发生该异常。 在异步获取某些数据后是否开始加载图像? 如果是这样,您可能希望在活动停止时取消异步提取,或者至少在提取完成并且活动被销毁时忽略结果。

您必须在方法onDestroy()onDestroyView()调用Glide.with(getActivity()).pauseRequests()Glide.get(getActivity()).clearMemory() onDestroyView() ,只需将其删除即可。

在Glade调用之前添加这个

if(!this.isDestroyed()){
   Glide.with(activity).load(...)
   ....
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM