您无法为已销毁的活动启动加载

时间:2017-11-18 10:54:50

标签: android gif android-glide

MainActivity低于加载GIF的代码,应用程序在重新启动活动后因加载GIF而崩溃。

 ImageView imageViewGIF = navigationView.findViewById(R.id.imageViewGIF);
    Glide.with(this).asGif().load(R.drawable.gift_3).into(imageViewGIF);

使用滑动

在ImageView中加载GIF

但是当我因使用

的某些要求重新启动应用程序时
 Intent intent = new Intent(context, SplashActivity.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
        startActivity(intent);
        finish();

应用程序因下面的日志而崩溃。

    FATAL EXCEPTION: main
 Process: com.apppackage, PID: 19360
 java.lang.IllegalArgumentException: You cannot start a load for a destroyed activity
     at android_support.qc.b(RequestManagerRetriever.java:298)
     at android_support.qc.a(RequestManagerRetriever.java:123)
     at android_support.ji.a(Glide.java:589)

我使用了'com.github.bumptech.glide:glide:4.2.0'

2 个答案:

答案 0 :(得分:1)

这是Glide库中的问题。在加载Glide之前,您可以检查上下文不等于null,或者您可以使用应用程序上下文。

Glide.with(getApplicationContext())
  .load(imageUrlToLoad)
  .into(ImageView);

答案 1 :(得分:0)

我不知道这是否对某人有帮助,但对我来说是一场斗争。我用过 Glide.with(getApplicationContext()) 但没用。

所以,我必须做一个 if 条件来检查活动是否被破坏了:

  if (!isDestroyed) {
    Glide.with(getApplicationContext()) 
    ....
  }

这对我来说非常有效!希望对某人有帮助