pilot51 / voicenotify

Android app that speaks notifications
https://voicenotify.app
Apache License 2.0
159 stars 57 forks source link

App Crashes #100

Closed Marukohe closed 1 year ago

Marukohe commented 1 year ago

StackTrace

java.util.ConcurrentModificationException
    at java.util.ArrayList$Itr.next(ArrayList.java:860)
    at com.pilot51.voicenotify.AppListFragment.massIgnore(AppListFragment.kt:176)
    at com.pilot51.voicenotify.AppListFragment.onMenuItemSelected(AppListFragment.kt:163)
    at androidx.core.view.MenuHostHelper.onMenuItemSelected(MenuHostHelper.java:90)
    at androidx.activity.ComponentActivity.onMenuItemSelected(ComponentActivity.java:518)
    at androidx.fragment.app.FragmentActivity.onMenuItemSelected(FragmentActivity.java:265)
    at com.android.internal.policy.PhoneWindow.onMenuItemSelected(PhoneWindow.java:1237)
    at com.android.internal.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:776)
    at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:148)
    at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:923)
    at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:913)
    at com.android.internal.view.menu.MenuPopup.onItemClick(MenuPopup.java:128)
    at android.widget.AdapterView.performItemClick(AdapterView.java:318)
    at android.widget.AbsListView.performItemClick(AbsListView.java:1159)
    at android.widget.AbsListView$PerformClick.run(AbsListView.java:3136)
    at android.widget.AbsListView$3.run(AbsListView.java:4052)
    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: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)

Reasons

AppListFragment#massIgnore will use a lateinit field apps. If the field is not fully ready, an exception occurs. If I click the Ignore All button even more quickly, another expection like lateinit property apps has not been initialized occurs.

Replay

I am sorry that the video is a bit stuck. Installing more apps on the emulator can help you trigger issues more easily.

https://user-images.githubusercontent.com/32957242/231518170-11ecbcb0-e0dd-4ab0-bad0-f4c3df387427.mp4