AGSkeletonLoading icon indicating copy to clipboard operation
AGSkeletonLoading copied to clipboard

Crash when Activity is stopped

Open Miha-x64 opened this issue 2 years ago • 0 comments

Getting this crash on Android 9 and 10 when stopping an Activity with SkeletonRecyclerView:

Fatal Exception: android.view.WindowManager$BadTokenException: Unable to add window -- token null is not valid; is your activity running?
       at android.view.ViewRootImpl.setView(ViewRootImpl.java:806)
       at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:356)
       at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:94)
       at aglibs.loading.skeleton.drawer.SkeletonListViewDrawer$startLoading$1.run(SkeletonListViewDrawer.kt:40)
       at android.os.Handler.handleCallback(Handler.java:873)
       at android.os.Handler.dispatchMessage(Handler.java:99)
       at android.os.Looper.loop(Looper.java:193)
       at android.app.ActivityThread.main(ActivityThread.java:6692)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

or from another View.post:

Fatal Exception: java.lang.IllegalArgumentException: View=android.widget.FrameLayout{cfea00b V.E...... ......I. 0,0-0,0} not attached to window manager
       at android.view.WindowManagerGlobal.findViewLocked(WindowManagerGlobal.java:485)
       at android.view.WindowManagerGlobal.removeView(WindowManagerGlobal.java:394)
       at android.view.WindowManagerImpl.removeView(WindowManagerImpl.java:121)
       at aglibs.loading.skeleton.drawer.SkeletonListViewDrawer$startLoading$1$$special$$inlined$also$lambda$1.run(SkeletonListViewDrawer.kt:48)
       at android.os.Handler.handleCallback(Handler.java:873)
       at android.os.Handler.dispatchMessage(Handler.java:99)
       at android.os.Looper.loop(Looper.java:193)
       at android.app.ActivityThread.main(ActivityThread.java:6692)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

Seems like we have to check windowVisibility and delay these tasks until the window is visible.

Miha-x64 avatar Feb 27 '23 11:02 Miha-x64