Glide Java.lang.IllegalStateException:无法获取回收位图的大小:android.graphics。Bitmap@a4f3bcf[896x157]ARGB_8888
我有一个有一些背景的回收者视图的活动 有时,当滚动recyclerview并按下back按钮时,我会出现此错误 我有两种背景(一种是模糊的) 要加载正常背景,我使用:Glide Java.lang.IllegalStateException:无法获取回收位图的大小:android.graphics。Bitmap@a4f3bcf[896x157]ARGB_8888,android,kotlin,android-glide,Android,Kotlin,Android Glide,我有一个有一些背景的回收者视图的活动 有时,当滚动recyclerview并按下back按钮时,我会出现此错误 我有两种背景(一种是模糊的) 要加载正常背景,我使用: fun AppCompatImageView.loadImage(resId: Int) { Glide.with(context) .load(AppCompatResources.getDrawable(context, resId)) .into(this) } Gl
fun AppCompatImageView.loadImage(resId: Int) {
Glide.with(context)
.load(AppCompatResources.getDrawable(context, resId))
.into(this)
}
Glide.with(mContext)
.applyDefaultRequestOptions(RequestOptions().override(backgroundWidth, backgroundHeight))
.asBitmap()
.load(R.drawable.card_dog_placeholder)
.into(object : SimpleTarget<Bitmap>() {
override fun onResourceReady(bitmap: Bitmap, transition: Transition<in Bitmap>?) {
cardYouAreHeroBackgroundImageView.setImageBitmap(bitmap.blurRenderScript(mContext, CARD_BG_RADIUS))
}
})
fun Bitmap.blurRenderScript(context: Context, radius: Float): Bitmap {
val rs = RenderScript.create(context)
val blurredBitmap = copy(Bitmap.Config.ARGB_8888, true)
val input = Allocation.createFromBitmap(rs, blurredBitmap, Allocation.MipmapControl.MIPMAP_FULL, Allocation.USAGE_SHARED)
val output = Allocation.createTyped(rs, input.type)
val script = ScriptIntrinsicBlur.create(rs, Element.U8_4(rs))
script.setInput(input)
script.setRadius(radius)
script.forEach(output)
output.copyTo(blurredBitmap)
return blurredBitmap
}
要加载模糊背景,我使用:
fun AppCompatImageView.loadImage(resId: Int) {
Glide.with(context)
.load(AppCompatResources.getDrawable(context, resId))
.into(this)
}
Glide.with(mContext)
.applyDefaultRequestOptions(RequestOptions().override(backgroundWidth, backgroundHeight))
.asBitmap()
.load(R.drawable.card_dog_placeholder)
.into(object : SimpleTarget<Bitmap>() {
override fun onResourceReady(bitmap: Bitmap, transition: Transition<in Bitmap>?) {
cardYouAreHeroBackgroundImageView.setImageBitmap(bitmap.blurRenderScript(mContext, CARD_BG_RADIUS))
}
})
fun Bitmap.blurRenderScript(context: Context, radius: Float): Bitmap {
val rs = RenderScript.create(context)
val blurredBitmap = copy(Bitmap.Config.ARGB_8888, true)
val input = Allocation.createFromBitmap(rs, blurredBitmap, Allocation.MipmapControl.MIPMAP_FULL, Allocation.USAGE_SHARED)
val output = Allocation.createTyped(rs, input.type)
val script = ScriptIntrinsicBlur.create(rs, Element.U8_4(rs))
script.setInput(input)
script.setRadius(radius)
script.forEach(output)
output.copyTo(blurredBitmap)
return blurredBitmap
}
Glide.with(mContext)
.applyDefaultRequestOptions(RequestOptions().override(backgroundWidth,backgroundHeight))
.asBitmap()
.加载(R.可抽出的卡\u狗\u占位符)
.into(对象:SimpleTarget(){
覆盖onResourceReady(位图:位图,转换:转换?){
CardYouarehorBackgroundImageView.setImageBitmap(位图.blurRenderScript(mContext,CARD_BG_RADIUS))
}
})
有趣的位图。blurRenderScript(上下文:上下文,半径:浮点):位图{
val rs=RenderScript.create(上下文)
val blurredBitmap=copy(Bitmap.Config.ARGB_8888,true)
val input=Allocation.createFromBitmap(rs、blurredBitmap、Allocation.MipmapControl.MIPMAP\u FULL、Allocation.USERATION\u SHARED)
val output=Allocation.CREATETYPE(rs,input.type)
val script=ScriptIntrinsicBlur.create(rs,Element.U8_4(rs))
script.setInput(输入)
script.setRadius(radius)
script.forEach(输出)
output.copyTo(模糊位图)
返回模糊位图
}
java.lang.RuntimeException:无法销毁活动
{com.yourpackage/com.yourpack.DashboardActivity}:
java.lang.IllegalStateException:无法获取回收的文件的大小
位图:android.graphics。Bitmap@a4f3bcf[896x157]ARGB_8888 at
android.app.ActivityThread.performDestroyActivity(ActivityThread.java:4383)
在
android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:4401)
在android.app.ActivityThread.-wrap5(未知来源:0)处
android.app.ActivityThread$H.handleMessage(ActivityThread.java:1649)
位于android.os.Handler.dispatchMessage(Handler.java:106)
Looper.loop(Looper.java:164)位于
android.app.ActivityThread.main(ActivityThread.java:6494)位于
java.lang.reflect.Method.invoke(本机方法)位于
com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)上
by:java.lang.IllegalStateException:无法获取回收的文件的大小
位图:android.graphics。Bitmap@a4f3bcf[896x157]ARGB_8888 at
com.bumptech.glide.util.util.getBitmapByteSize(util.java:78)位于
com.bumptech.glide.load.resource.bitmap.UnitBitmapDecoder$NonOwnedBitmapResource.getSize(UnitBitmapDecoder.java:49)
在
com.bumptech.glide.load.engine.EngineResource.getSize(EngineResource.java:60)
在
com.bumptech.glide.load.engine.cache.LruResourceCache.getSize(LruResourceCache.java:42)
在
com.bumptech.glide.load.engine.cache.LruResourceCache.getSize(LruResourceCache.java:13)
位于com.bumptech.glide.util.LruCache.put(LruCache.java:124)
com.bumptech.glide.load.engine.cache.LruResourceCache.put(LruResourceCache.java:13)
在
com.bumptech.glide.load.engine.engine.onResourceReleased(engine.java:326)
在
com.bumptech.glide.load.engine.EngineResource.release(EngineResource.java:112)
位于com.bumptech.glide.load.engine.engine.release(engine.java:286)
com.bumptech.glide.request.SingleRequest.releaseResource(SingleRequest.java:345)
在
com.bumptech.glide.request.SingleRequest.clear(SingleRequest.java:324)
在
com.bumptech.glide.manager.RequestTracker.clearRemoveAndMaybeRecycle(RequestTracker.java:73)
在
com.bumptech.glide.manager.RequestTracker.clearRemoveAndRecycle(RequestTracker.java:60)
位于com.bumptech.glide.RequestManager.untrack(RequestManager.java:623)
在
untrackOrDelegate(RequestManager.java:591)
在com.bumptech.glide.RequestManager.clear(RequestManager.java:579)上
com.bumptech.glide.RequestManager.onDestroy(RequestManager.java:323)
在
com.bumptech.glide.manager.ActivityFragmentLifecycle.onDestroy(ActivityFragmentLifecycle.java:65)
在
com.bumptech.glide.manager.SupportRequestManagerFragment.onDestroy(SupportRequestManagerFragment.java:194)
位于android.support.v4.app.Fragment.performDestroy(Fragment.java:2585)
在
FragmentManagerImpl.moveToState(FragmentManager.java:1559)
在
FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1752)
在
android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1821)
在
android.support.v4.app.FragmentManagerImpl.dispatchStateChange(FragmentManager.java:3251)
在
android.support.v4.app.FragmentManagerImpl.dispatchDestroy(FragmentManager.java:3242)
在
android.support.v4.app.FragmentController.dispatchDestroy(FragmentController.java:265)
在
android.support.v4.app.FragmentActivity.ondestory(FragmentActivity.java:390)
在
android.support.v7.app.AppCompatActivity.onDestroy(AppCompatActivity.java:209)
在android.app.Activity.performDestroy(Activity.java:7208)的
android.app.Instrumentation.callActivityOnDestroy(Instrumentation.java:1249)
在
android.app.ActivityThread.performDestroyActivity(ActivityThread.java:4370)
在
android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:4401)
在android.app.ActivityThread.-wrap5(未知来源:0)处
android.app.ActivityThread$H.handleMessage(ActivityThread.java:1649)
位于android.os.Handler.dispatchMessage(Handler.java:106)
Looper.loop(Looper.java:164)位于
android.app.ActivityThread.main(ActivityThread.java:6494)位于
java.lang.reflect.Method.invoke(本机方法)位于
com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
有什么想法吗?确保您的代码中没有如下语句:
Glide.with(getApplicationContext()).clear(target);
Glide.get(getApplicationContext()).getBitmapPool().clearMemory();
<