版权声明:本文为刘少明原创文章,未经博主允许不得转载。 https://blog.csdn.net/lsm135/article/details/82112686
java.lang.IllegalArgumentException: You cannot start a load for a destroyed activity
BottomNavigationView中Fragment切换或者各种Activity切换的时候(这些Activity,Fragment里有RecyclerView加载网络数据)
报错如下
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.appjishu.starzone, PID: 25262
java.lang.IllegalArgumentException: You cannot start a load for a destroyed activity
at com.bumptech.glide.manager.RequestManagerRetriever.assertNotDestroyed(RequestManagerRetriever.java:312)
at com.bumptech.glide.manager.RequestManagerRetriever.get(RequestManagerRetriever.java:131)
at com.bumptech.glide.manager.RequestManagerRetriever.get(RequestManagerRetriever.java:115)
at com.bumptech.glide.manager.RequestManagerRetriever.get(RequestManagerRetriever.java:119)
at com.bumptech.glide.Glide.with(Glide.java:697)
at razerdp.github.com.ui.imageloader.ImageLoadMnanger$GlideDispatcher.getGlide(ImageLoadMnanger.java:80)
at razerdp.github.com.ui.imageloader.ImageLoadMnanger.loadImage(ImageLoadMnanger.java:50)
at razerdp.github.com.ui.imageloader.ImageLoadMnanger.loadImage(ImageLoadMnanger.java:46)
at razerdp.github.com.ui.imageloader.ImageLoadMnanger.loadImage(ImageLoadMnanger.java:42)
at com.appjishu.starzone.activity.circle.FriendCircleActivity$HostViewHolder.loadHostData(FriendCircleActivity.java:575)
at com.xxx.activity.circle.FriendCircleActivity$MyHandler.handleMessage(FriendCircleActivity.java:606)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:157)
at android.app.ActivityThread.main(ActivityThread.java:5883)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:871)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:687)
at dalvik.system.NativeStart.main(Native Method)
D/Process: killProcess, pid=25262
com.android.internal.os.RuntimeInit$UncaughtHandler.uncaughtException:131 android.support.v7.app.AppCompatDelegateImplBase$1.uncaughtException:66 com.xiaomi.mipush.sdk.z.uncaughtException:-1
Disconnected from the target VM, address: 'localhost:8601', transport: 'socket'
原因,在更新UI的时候,这个Activity已经被destroy了。
办法。
在Activity或者Fragment里的onDestroy()里把RecyclerView.Adapter 和RecyclerView的实例设为null.就行了。
例如
public void onDestroy() {
if (friendAdapter != null) {
friendAdapter = null;
}
if (friendRecyclerView != null) {
friendRecyclerView = null;
}
super.onDestroy();
}
这样,退出这个Activity的时候就会自动销毁这个adapter和recyclerview了。
如果还报相同的错误。 建议在自己的操作前面加上if判断, 确保自己的逻辑代码执行时这个Activity是活的
if (activity != null && !activity.isDestroyed() {
// 自己的逻辑代码
}