Android Kotlin - 滑动错误断言NotDestroyed

问题描述 投票:0回答:1

我在谷歌播放控制台中看到一些用户收到此错误:

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)

我的设备与遇到此崩溃的设备具有相同的 Android 版本,但我无法重现它,一切都在我的设备上正常工作

我猜它发生在 setHeader 函数中的某个地方:

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()
onCreate
内部被称为,有时在
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()
}

是否当

signInChanged
profileImageChanged
这两个条件同时调用
setHeader()
时会发生崩溃?

android kotlin android-glide
1个回答
0
投票

我已经解决了这个问题。出现这个错误是因为活动完成时滑动加载图像。您可以使用“try catch”来避免崩溃

© www.soinside.com 2019 - 2024. All rights reserved.