Seeneva / seeneva-reader-android

A libre smart powered comic book reader for Android.
https://seeneva.app
248 stars 18 forks source link

Android 9 crash after touch event #24

Closed Zellius closed 3 years ago

Zellius commented 3 years ago

How to reproduce:

  1. Open Seeneva app.
  2. Open any comic book.
  3. Close it.
  4. Reopen it quickly.
2021-05-26 11:48:48.309 6923-6923/app.seeneva.reader.debug E/AndroidRuntime: FATAL EXCEPTION: main
    Process: app.seeneva.reader.debug, PID: 6923
    java.lang.IllegalStateException: Can't init view binding. Destroyed state
        at app.seeneva.reader.binding.LifecycleBindingDelegate.initializeViewBinding(Binding.kt:75)
        at app.seeneva.reader.binding.LifecycleBindingDelegate.getBinding(Binding.kt:54)
        at app.seeneva.reader.binding.BindingKt.getValue(Binding.kt:42)
        at app.seeneva.reader.screen.viewer.BookViewerActivity.getViewBinding(BookViewerActivity.kt:117)
        at app.seeneva.reader.screen.viewer.BookViewerActivity.access$getViewBinding(BookViewerActivity.kt:112)
        at app.seeneva.reader.screen.viewer.BookViewerActivity$gestureDetector$2$1.onSingleTapConfirmed(BookViewerActivity.kt:219)
        at android.view.GestureDetector$GestureHandler.handleMessage(GestureDetector.java:300)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:193)
        at android.app.ActivityThread.main(ActivityThread.java:6669)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
2021-05-26 11:48:48.312 6923-6923/app.seeneva.reader.debug I/Process: Sending signal. PID: 6923 SIG: 9

For some reason the BookViewerActivity receives touches event after it was closed.

override fun dispatchTouchEvent(ev: MotionEvent): Boolean {
        gestureDetector.onTouchEvent(ev)
        return super.dispatchTouchEvent(ev)
}

I can reproduce this on Android 9 only.