Я пытаюсь устранить ошибку, которая возникает только в Android 8 и 9. Я смотрю в некоторых постах, но они старые. Я нахожу в Android Doc решения для Android 3 и новее, но я думаю, что эта ошибка происходит для чего-то нового. Я пытался разрешить с помощью информации о документах, но я не могу импортировать какой-либо класс, например 'RecyclingBitmapDrawable'
Здесь документ Android: https://developer.android.com/topic/performance/graphics/manage-memory#kotlin
И сообщение, которое я прочитал: Холст: попытка использовать переработанную ошибку растрового изображения
Я пытаюсь контролировать эту растровую ошибку с помощью этого кода.
companion object {
private var bitmapResource: Bitmap? = null
fun getCropBitmapResource(context: Context): Bitmap {
if (bitmapResource == null) {
bitmapResource = drawableResourceToBitmap(context, R.drawable.ic_select)
}
return bitmapResource!!
}
}
fun drawableResourceToBitmap(context: Context, imageResource: Int): Bitmap {
val drawable = AppCompatDrawableManager.get().getDrawable(context, imageResource)
val bitmapResource = Bitmap.createBitmap(drawable.intrinsicWidth, drawable.intrinsicHeight, Bitmap.Config.ARGB_8888)
val canvas = Canvas(bitmapResource)
drawable.setBounds(0, 0, canvas.width, canvas.height)
drawable.draw(canvas)
return bitmapResource
}
Здесь ошибка
Canvas: trying to use a recycled bitmap android.graphics.Bitmap@73618ca
android.graphics.BaseCanvas.throwIfCannotDraw (BaseCanvas.java:62)
android.view.DisplayListCanvas.throwIfCannotDraw (DisplayListCanvas.java:226)
android.view.RecordingCanvas.drawBitmap (RecordingCanvas.java:98)
android.graphics.drawable.BitmapDrawable.draw (BitmapDrawable.java:545)
android.widget.ImageView.onDraw (ImageView.java:1360)
android.view.View.draw (View.java:20234)
android.view.View.updateDisplayListIfDirty (View.java:19109)
android.view.View.draw (View.java:19962)
android.view.ViewGroup.drawChild (ViewGroup.java:4337)
android.view.ViewGroup.dispatchDraw (ViewGroup.java:4114)
android.view.View.draw (View.java:20237)
android.view.View.updateDisplayListIfDirty (View.java:19109)
android.view.View.draw (View.java:19962)
android.view.ViewGroup.drawChild (ViewGroup.java:4337)
android.view.ViewGroup.dispatchDraw (ViewGroup.java:4114)
androidx.constraintlayout.widget.ConstraintLayout.dispatchDraw (ConstraintLayout.java:2023)
android.view.View.updateDisplayListIfDirty (View.java:19100)
android.view.View.draw (View.java:19962)
android.view.ViewGroup.drawChild (ViewGroup.java:4337)
android.view.ViewGroup.dispatchDraw (ViewGroup.java:4114)
android.view.View.draw (View.java:20237)
android.view.View.updateDisplayListIfDirty (View.java:19109)
android.view.View.draw (View.java:19962)
android.view.ViewGroup.drawChild (ViewGroup.java:4337)
android.view.ViewGroup.dispatchDraw (ViewGroup.java:4114)
android.view.View.draw (View.java:20237)
androidx.viewpager.widget.ViewPager.draw (ViewPager.java:2426)
android.view.View.updateDisplayListIfDirty (View.java:19109)
android.view.View.draw (View.java:19962)
android.view.ViewGroup.drawChild (ViewGroup.java:4337)
android.view.ViewGroup.dispatchDraw (ViewGroup.java:4114)
androidx.constraintlayout.widget.ConstraintLayout.dispatchDraw (ConstraintLayout.java:2023)
android.view.View.draw (View.java:20237)
android.view.View.updateDisplayListIfDirty (View.java:19109)
android.view.View.draw (View.java:19962)
android.view.ViewGroup.drawChild (ViewGroup.java:4337)
android.view.ViewGroup.dispatchDraw (ViewGroup.java:4114)
android.view.View.updateDisplayListIfDirty (View.java:19100)
android.view.View.draw (View.java:19962)
android.view.ViewGroup.drawChild (ViewGroup.java:4337)
android.view.ViewGroup.dispatchDraw (ViewGroup.java:4114)
android.view.View.updateDisplayListIfDirty (View.java:19100)
android.view.View.draw (View.java:19962)
android.view.ViewGroup.drawChild (ViewGroup.java:4337)
android.view.ViewGroup.dispatchDraw (ViewGroup.java:4114)
android.view.View.updateDisplayListIfDirty (View.java:19100)
android.view.View.draw (View.java:19962)
android.view.ViewGroup.drawChild (ViewGroup.java:4337)
android.view.ViewGroup.dispatchDraw (ViewGroup.java:4114)
android.view.View.updateDisplayListIfDirty (View.java:19100)
android.view.View.draw (View.java:19962)
android.view.ViewGroup.drawChild (ViewGroup.java:4337)
android.view.ViewGroup.dispatchDraw (ViewGroup.java:4114)
android.view.View.draw (View.java:20237)
com.android.internal.policy.DecorView.draw (DecorView.java:784)
android.view.View.updateDisplayListIfDirty (View.java:19109)
android.view.ThreadedRenderer.updateViewTreeDisplayList (ThreadedRenderer.java:686)
android.view.ThreadedRenderer.updateRootDisplayList (ThreadedRenderer.java:692)
android.view.ThreadedRenderer.draw (ThreadedRenderer.java:801)
android.view.ViewRootImpl.draw (ViewRootImpl.java:3361)
android.view.ViewRootImpl.performDraw (ViewRootImpl.java:3158)
android.view.ViewRootImpl.performTraversals (ViewRootImpl.java:2527)
android.view.ViewRootImpl.doTraversal (ViewRootImpl.java:1500)
android.view.ViewRootImpl$TraversalRunnable.run (ViewRootImpl.java:7342)
android.view.Choreographer$CallbackRecord.run (Choreographer.java:1036)
android.view.Choreographer.doCallbacks (Choreographer.java:832)
android.view.Choreographer.doFrame (Choreographer.java:767)
android.view.Choreographer$FrameDisplayEventReceiver.run (Choreographer.java:1022)
android.os.Handler.handleCallback (Handler.java:873)
android.os.Handler.dispatchMessage (Handler.java:99)
android.os.Looper.loop (Looper.java:201)
android.app.ActivityThread.main (ActivityThread.java:6810)
java.lang.reflect.Method.invoke (Method.java)
com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:547)
com.android.internal.os.ZygoteInit.main (ZygoteInit.java:873)
Я не вызываю recycle () ни в одной части своего кода.