Android Kotlin - glide error assertNotDestroyed

Viewed 35

I see in google play console that some of the users are getting this error:

java.lang.IllegalArgumentException: 
  at com.bumptech.glide.manager.RequestManagerRetriever.assertNotDestroyed (RequestManagerRetriever.java:348)
  at com.bumptech.glide.manager.RequestManagerRetriever.get (RequestManagerRetriever.java:148)
  at com.bumptech.glide.Glide.with (Glide.java:826)
  at de.xxx.xxx.MainActivity.setHeader (MainActivity.kt:616)
  at de.xxx.xxx.MainActivity.requestAppConfig$lambda-8 (MainActivity.kt:488)
  at de.xxx.xxx.MainActivity$$InternalSyntheticLambda$1$ed844943413167d84155071c08c71caa93816230bdd81f0b165e27bb97857509$0.onResponse (MainActivity.java)
  at com.android.volley.toolbox.StringRequest.deliverResponse (StringRequest.java:82)
  at com.android.volley.toolbox.StringRequest.deliverResponse (StringRequest.java:29)
  at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run (ExecutorDelivery.java:102)
  at android.os.Handler.handleCallback (Handler.java:790)
  at android.os.Handler.dispatchMessage (Handler.java:99)
  at android.os.Looper.loop (Looper.java:164)
  at android.app.ActivityThread.main (ActivityThread.java:7000)
  at java.lang.reflect.Method.invoke (Native Method)
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:441)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1408)

I have devices with same Android versions as those who are getting this crash but I can't reprodice it, everything works as it should on my devices

I'm guessing it happens somewhere in the setHeader function:

private fun setHeader(){

    val userID = prefs.getLong("userid", 0)

    if(userID != 0.toLong()){

        val serverScaling = func.openServerScalingList()
        val whichInt = func.getThirdInt(userID.toString())
        val mediaServer = serverScaling[whichInt]

        val glideProfileImageOptions = RequestOptions
            .circleCropTransform()
            .diskCacheStrategy(DiskCacheStrategy.NONE)
            .skipMemoryCache(true)

        Glide
            .with(this@MainActivity)
            .load("$mediaServer/media/profimg/?n=$userID.jpg")
            .apply(glideProfileImageOptions)
            .placeholder(R.drawable.ic_user)
            .into(binding.contentMain.btnProfileImage)
    }else{
        Glide
            .with(this@MainActivity)
            .load(R.drawable.ic_user)
            .into(binding.contentMain.btnProfileImage)
    }
}

setHeader() is called inside onCreate and sometimes in onResume():

if(prefs.getBoolean("signInChanged", false)){

    setHeader()

    prefs.edit().putBoolean("signInChanged", false).apply()
}

if(prefs.getBoolean("profileImageChanged", false)){
    setHeader()

    prefs.edit().putBoolean("profileImageChanged", false).apply()
}

Could it be that the crash happen when both conditions, signInChanged and profileImageChanged are calling setHeader() at the same time?

0 Answers
Related