E: FATAL EXCEPTION: main
Process: *, PID: 22482
java.lang.RuntimeException: Canvas: trying to use a recycled bitmap android.graphics.Bitmap@24e46ab
at android.graphics.Canvas.throwIfCannotDraw(Canvas.java:1280)
at android.view.DisplayListCanvas.throwIfCannotDraw(DisplayListCanvas.java:257)
at android.graphics.Canvas.drawBitmap(Canvas.java:1424)
at android.graphics.drawable.BitmapDrawable.draw(BitmapDrawable.java:528)
at android.widget.ImageView.onDraw(ImageView.java:1316)
at android.view.View.draw(View.java:17293)
at android.view.View.updateDisplayListIfDirty(View.java:16275)
at android.view.View.draw(View.java:17059)
at android.view.ViewGroup.drawChild(ViewGroup.java:3731)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3517)
at android.view.View.updateDisplayListIfDirty(View.java:16270)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3715)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3695)
at android.view.View.updateDisplayListIfDirty(View.java:16238)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3715)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3695)
at android.view.View.updateDisplayListIfDirty(View.java:16238)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3715)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3695)
at android.view.View.updateDisplayListIfDirty(View.java:16238)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3715)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3695)
at android.view.View.updateDisplayListIfDirty(View.java:16238)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3715)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3695)
at android.view.View.updateDisplayListIfDirty(View.java:16238)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3715)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3695)
at android.view.View.updateDisplayListIfDirty(View.java:16238)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3715)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3695)
at android.view.View.updateDisplayListIfDirty(View.java:16238)
at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:652)
at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:658)
at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:766)
at android.view.ViewRootImpl.draw(ViewRootImpl.java:2834)
at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2642)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2249)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1280)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6432)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:874)
at android.view.Choreographer.doCallbacks(Choreographer.java:686)
at android.view.Choreographer.doFrame(Choreographer.java:621)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:860)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6374)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
D: App Event: crash
Приложение падает, но как понять, что и где заставляет его падать? Смотрел debugger'ом, но там все приблизительно тоже самое, нет ни одного метода моего приложения - только стандартные.
Его вызывает bitmap.recycle()
. Быстрое решение не должно вызывать bitmap.recycle();
, что строго не требуется для android >2.3.3. Если вы все равно хотите освободить эту память, вам нужно будет найти способ проверить, когда битмап действительно больше не нужен (т. е. Canvas имел возможность завершить операции рисования).
https://stackoverflow.com/a/31227624/4854931
if (mBitmap != null && !mBitmap.isRecycled()) {
mBitmap.recycle();
mBitmap = null;
}
https://stackoverflow.com/a/22129476/4854931
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Доброго времени сутокНовичок в Java, прохожу коллекции и возник вопрос
У меня есть 2 класса: MainActivity, ChatsCommunicator и интерфейс IView