我在谷歌播放控制台中看到一些用户收到此错误:
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()
时会发生崩溃?
我已经解决了这个问题。出现这个错误是因为活动完成时滑动加载图像。您可以使用“try catch”来避免崩溃