yuriykulikov / AlarmClock

Most popular open source Android Alarm Clock App
509 stars 173 forks source link

App crash when modify "Pre-alarm duration" #389

Closed Nriver closed 2 years ago

Nriver commented 2 years ago

Describe the bug

App crash when modify "Pre-alarm duration".

To Reproduce

Clone the latetest code from repo and build it with Android Studio. Run the app on my phone and modify "Pre-alarm duration" in settings, the app will crash.

Logs

Some output in logcat.

D/ViewRootImpl: enqueueInputEventMotionEvent { action=ACTION_DOWN, actionButton=0, id[0]=0, x[0]=393.75, y[0]=552.25, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=103793789, downTime=103793789, deviceId=2, source=0x1002, displayId=0 }
D/ViewRootImpl[SettingsActivity]: processMotionEvent MotionEvent { action=ACTION_DOWN, actionButton=0, id[0]=0, x[0]=393.75, y[0]=552.25, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=103793789, downTime=103793789, deviceId=2, source=0x1002, displayId=0 }
D/ViewRootImpl[SettingsActivity]: dispatchPointerEvent handled=true, event=MotionEvent { action=ACTION_DOWN, actionButton=0, id[0]=0, x[0]=393.75, y[0]=552.25, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=103793789, downTime=103793789, deviceId=2, source=0x1002, displayId=0 }
D/ViewRootImpl[SettingsActivity]: processMotionEvent MotionEvent { action=ACTION_UP, actionButton=0, id[0]=0, x[0]=393.75, y[0]=552.25, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=103793844, downTime=103793789, deviceId=2, source=0x1002, displayId=0 }
D/ViewRootImpl[SettingsActivity]: dispatchPointerEvent handled=true, event=MotionEvent { action=ACTION_UP, actionButton=0, id[0]=0, x[0]=393.75, y[0]=552.25, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=103793844, downTime=103793789, deviceId=2, source=0x1002, displayId=0 }
D/OpenGLRenderer: endAllActiveAnimators on 0xb400007a76d03d00 (AlertController$RecycleListView) with handle 0xb400007ae6681b00
D/AlarmCore: [main] - [Alarm 1] event PrealarmDurationChanged -> (DisabledState > RootState)
W/System.err: io.reactivex.exceptions.OnErrorNotImplementedException: The exception was not handled due to missing onError handler in the subscribe() method call. Further reading: https://github.com/ReactiveX/RxJava/wiki/Error-Handling | java.lang.RuntimeException: Unhandled event: PrealarmDurationChanged
W/System.err:     at io.reactivex.internal.functions.Functions$OnErrorMissingConsumer.accept(Functions.java:704)
        at io.reactivex.internal.functions.Functions$OnErrorMissingConsumer.accept(Functions.java:701)
        at io.reactivex.internal.observers.LambdaObserver.onError(LambdaObserver.java:77)
        at io.reactivex.internal.observers.LambdaObserver.onNext(LambdaObserver.java:67)
        at io.reactivex.internal.operators.observable.ObservableSkip$SkipObserver.onNext(ObservableSkip.java:56)
        at io.reactivex.internal.operators.observable.ObservableMap$MapObserver.onNext(ObservableMap.java:62)
        at io.reactivex.internal.operators.observable.ObservableMap$MapObserver.onNext(ObservableMap.java:62)
        at io.reactivex.internal.operators.observable.ObservableFilter$FilterObserver.onNext(ObservableFilter.java:52)
        at io.reactivex.internal.operators.observable.ObservableConcatMap$ConcatMapDelayErrorObserver$DelayErrorInnerObserver.onNext(ObservableConcatMap.java:506)
        at io.reactivex.internal.operators.observable.ObservableRefCount$RefCountObserver.onNext(ObservableRefCount.java:227)
        at io.reactivex.internal.operators.observable.ObservablePublishAlt$PublishConnection.onNext(ObservablePublishAlt.java:177)
        at io.reactivex.internal.operators.observable.ObservableCreate$CreateEmitter.onNext(ObservableCreate.java:66)
        at com.better.alarm.stores.SharedRxDataStoreFactory$keyChanges$1$listener$1.onSharedPreferenceChanged(SharedRxDataStoreFactory.kt:59)
        at android.app.SharedPreferencesImpl$EditorImpl.notifyListeners(SharedPreferencesImpl.java:637)
        at android.app.SharedPreferencesImpl$EditorImpl.apply(SharedPreferencesImpl.java:511)
        at androidx.preference.Preference.tryCommit(Preference.java:1632)
        at androidx.preference.Preference.persistString(Preference.java:1663)
        at androidx.preference.ListPreference.setValue(ListPreference.java:190)
        at androidx.preference.ListPreferenceDialogFragmentCompat.onDialogClosed(ListPreferenceDialogFragmentCompat.java:108)
        at androidx.preference.PreferenceDialogFragmentCompat.onDismiss(PreferenceDialogFragmentCompat.java:265)
        at androidx.fragment.app.DialogFragment$3.onDismiss(DialogFragment.java:120)
        at android.app.Dialog$ListenersHandler.handleMessage(Dialog.java:1424)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:260)
        at android.app.ActivityThread.main(ActivityThread.java:8260)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:612)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1006)
W/System.err: Caused by: java.lang.RuntimeException: Unhandled event: PrealarmDurationChanged
        at com.better.alarm.model.AlarmCore$RootState.onEvent(AlarmCore.kt:202)
        at com.better.alarm.model.AlarmCore$RootState.onEvent(AlarmCore.kt:199)
        at com.better.alarm.statemachine.StateMachine.sendEvent(StateMachine.kt:158)
        at com.better.alarm.model.AlarmCore._init_$lambda-0(AlarmCore.kt:149)
        at com.better.alarm.model.AlarmCore.$r8$lambda$tGW0lBtaF0xMDZhI0SuKJFMnBzQ(Unknown Source:0)
        at com.better.alarm.model.AlarmCore$$ExternalSyntheticLambda0.accept(Unknown Source:4)
        at io.reactivex.internal.observers.LambdaObserver.onNext(LambdaObserver.java:63)
        ... 24 more
E/BugReporter: [main] - Uncaught exception io.reactivex.exceptions.OnErrorNotImplementedException: The exception was not handled due to missing onError handler in the subscribe() method call. Further reading: https://github.com/ReactiveX/RxJava/wiki/Error-Handling | java.lang.RuntimeException: Unhandled event: PrealarmDurationChanged
    io.reactivex.exceptions.OnErrorNotImplementedException: The exception was not handled due to missing onError handler in the subscribe() method call. Further reading: https://github.com/ReactiveX/RxJava/wiki/Error-Handling | java.lang.RuntimeException: Unhandled event: PrealarmDurationChanged
        at io.reactivex.internal.functions.Functions$OnErrorMissingConsumer.accept(Functions.java:704)
        at io.reactivex.internal.functions.Functions$OnErrorMissingConsumer.accept(Functions.java:701)
        at io.reactivex.internal.observers.LambdaObserver.onError(LambdaObserver.java:77)
        at io.reactivex.internal.observers.LambdaObserver.onNext(LambdaObserver.java:67)
        at io.reactivex.internal.operators.observable.ObservableSkip$SkipObserver.onNext(ObservableSkip.java:56)
        at io.reactivex.internal.operators.observable.ObservableMap$MapObserver.onNext(ObservableMap.java:62)
        at io.reactivex.internal.operators.observable.ObservableMap$MapObserver.onNext(ObservableMap.java:62)
        at io.reactivex.internal.operators.observable.ObservableFilter$FilterObserver.onNext(ObservableFilter.java:52)
        at io.reactivex.internal.operators.observable.ObservableConcatMap$ConcatMapDelayErrorObserver$DelayErrorInnerObserver.onNext(ObservableConcatMap.java:506)
        at io.reactivex.internal.operators.observable.ObservableRefCount$RefCountObserver.onNext(ObservableRefCount.java:227)
        at io.reactivex.internal.operators.observable.ObservablePublishAlt$PublishConnection.onNext(ObservablePublishAlt.java:177)
        at io.reactivex.internal.operators.observable.ObservableCreate$CreateEmitter.onNext(ObservableCreate.java:66)
        at com.better.alarm.stores.SharedRxDataStoreFactory$keyChanges$1$listener$1.onSharedPreferenceChanged(SharedRxDataStoreFactory.kt:59)
        at android.app.SharedPreferencesImpl$EditorImpl.notifyListeners(SharedPreferencesImpl.java:637)
        at android.app.SharedPreferencesImpl$EditorImpl.apply(SharedPreferencesImpl.java:511)
        at androidx.preference.Preference.tryCommit(Preference.java:1632)
        at androidx.preference.Preference.persistString(Preference.java:1663)
        at androidx.preference.ListPreference.setValue(ListPreference.java:190)
        at androidx.preference.ListPreferenceDialogFragmentCompat.onDialogClosed(ListPreferenceDialogFragmentCompat.java:108)
        at androidx.preference.PreferenceDialogFragmentCompat.onDismiss(PreferenceDialogFragmentCompat.java:265)
        at androidx.fragment.app.DialogFragment$3.onDismiss(DialogFragment.java:120)
        at android.app.Dialog$ListenersHandler.handleMessage(Dialog.java:1424)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:260)
        at android.app.ActivityThread.main(ActivityThread.java:8260)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:612)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1006)
     Caused by: java.lang.RuntimeException: Unhandled event: PrealarmDurationChanged
        at com.better.alarm.model.AlarmCore$RootState.onEvent(AlarmCore.kt:202)
        at com.better.alarm.model.AlarmCore$RootState.onEvent(AlarmCore.kt:199)
        at com.better.alarm.statemachine.StateMachine.sendEvent(StateMachine.kt:158)
        at com.better.alarm.model.AlarmCore._init_$lambda-0(AlarmCore.kt:149)
        at com.better.alarm.model.AlarmCore.$r8$lambda$tGW0lBtaF0xMDZhI0SuKJFMnBzQ(Unknown Source:0)
        at com.better.alarm.model.AlarmCore$$ExternalSyntheticLambda0.accept(Unknown Source:4)
        at io.reactivex.internal.observers.LambdaObserver.onNext(LambdaObserver.java:63)
        ... 24 common frames omitted
I/ACRA: Sending report /data/user/0/com.better.alarm.debug/app_ACRA-approved/2021-11-04T11:42:07.838+08:00.stacktrace
W/Bundle: Key android.intent.extra.TEXT expected ArrayList<CharSequence> but value was a java.lang.String.  The default value <null> was returned.
W/Bundle: Attempt to cast generated internal exception:
    java.lang.ClassCastException: java.lang.String cannot be cast to java.util.ArrayList
        at android.os.BaseBundle.getCharSequenceArrayList(BaseBundle.java:1351)
        at android.os.Bundle.getCharSequenceArrayList(Bundle.java:1145)
        at android.content.Intent.getCharSequenceArrayListExtra(Intent.java:8391)
        at android.content.Intent.migrateExtraStreamToClipData(Intent.java:11404)
        at android.app.Instrumentation.execStartActivity(Instrumentation.java:1723)
        at android.app.ContextImpl.startActivity(ContextImpl.java:1059)
        at android.app.ContextImpl.startActivity(ContextImpl.java:1017)
        at android.content.ContextWrapper.startActivity(ContextWrapper.java:413)
        at org.acra.sender.EmailIntentSender.send(EmailIntentSender.java:101)
        at org.acra.sender.ReportSender.send(ReportSender.java:54)
        at org.acra.sender.ReportDistributor.sendCrashReport(ReportDistributor.java:115)
        at org.acra.sender.ReportDistributor.distribute(ReportDistributor.java:80)
        at org.acra.sender.SendingConductor.sendReports(SendingConductor.java:70)
        at org.acra.scheduler.DefaultSenderScheduler.scheduleReportSending(DefaultSenderScheduler.java:70)
        at org.acra.scheduler.SchedulerStarter.scheduleReports(SchedulerStarter.java:66)
        at org.acra.builder.ReportExecutor.sendReport(ReportExecutor.java:248)
        at org.acra.builder.ReportExecutor.execute(ReportExecutor.java:183)
        at org.acra.builder.ReportBuilder.build(ReportBuilder.java:183)
        at org.acra.reporter.ErrorReporterImpl.handleException(ErrorReporterImpl.java:206)
        at org.acra.reporter.ErrorReporterImpl.handleException(ErrorReporterImpl.java:214)
        at com.better.alarm.bugreports.BugReporter.attachToMainThread$lambda-4(BugReporter.kt:68)
        at com.better.alarm.bugreports.BugReporter.$r8$lambda$rqcnpRaz7fl9d5xns7KsLOxNrcQ(Unknown Source:0)
        at com.better.alarm.bugreports.BugReporter$$ExternalSyntheticLambda0.uncaughtException(Unknown Source:4)
        at io.reactivex.plugins.RxJavaPlugins.uncaught(RxJavaPlugins.java:429)
        at io.reactivex.plugins.RxJavaPlugins.onError(RxJavaPlugins.java:383)
        at io.reactivex.internal.functions.Functions$OnErrorMissingConsumer.accept(Functions.java:704)
        at io.reactivex.internal.functions.Functions$OnErrorMissingConsumer.accept(Functions.java:701)
        at io.reactivex.internal.observers.LambdaObserver.onError(LambdaObserver.java:77)
        at io.reactivex.internal.observers.LambdaObserver.onNext(LambdaObserver.java:67)
        at io.reactivex.internal.operators.observable.ObservableSkip$SkipObserver.onNext(ObservableSkip.java:56)
        at io.reactivex.internal.operators.observable.ObservableMap$MapObserver.onNext(ObservableMap.java:62)
        at io.reactivex.internal.operators.observable.ObservableMap$MapObserver.onNext(ObservableMap.java:62)
        at io.reactivex.internal.operators.observable.ObservableFilter$FilterObserver.onNext(ObservableFilter.java:52)
        at io.reactivex.internal.operators.observable.ObservableConcatMap$ConcatMapDelayErrorObserver$DelayErrorInnerObserver.onNext(ObservableConcatMap.java:506)
        at io.reactivex.internal.operators.observable.ObservableRefCount$RefCountObserver.onNext(ObservableRefCount.java:227)
        at io.reactivex.internal.operators.observable.ObservablePublishAlt$PublishConnection.onNext(ObservablePublishAlt.java:177)
        at io.reactivex.internal.operators.observable.ObservableCreate$CreateEmitter.onNext(ObservableCreate.java:66)
        at com.better.alarm.stores.SharedRxDataStoreFactory$keyChanges$1$listener$1.onSharedPreferenceChanged(SharedRxDataStoreFactory.kt:59)
        at android.app.SharedPreferencesImpl$EditorImpl.notifyListeners(SharedPreferencesImpl.java:637)
        at android.app.SharedPreferencesImpl$EditorImpl.apply(SharedPreferencesImpl.java:511)
        at androidx.preference.Preference.tryCommit(Preference.java:1632)
        at androidx.preference.Preference.persistString(Preference.java:1663)
        at androidx.preference.ListPreference.setValue(ListPreference.java:190)
        at androidx.preference.ListPreferenceDialogFragmentCompat.onDialogClosed(ListPreferenceDialogFragmentCompat.java:108)
        at androidx.preference.PreferenceDialogFragmentCompat.onDismiss(PreferenceDialogFragmentCompat.java:265)
        at androidx.fragment.app.DialogFragment$3.onDismiss(DialogFragment.java:120)
        at android.app.Dialog$ListenersHandler.handleMessage(Dialog.java:1424)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:260)
        at android.app.ActivityThread.main(ActivityThread.java:8260)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:612)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1006)
E/Parcel: Reading a NULL string not supported here.
E/ACRA: ACRA caught a OnErrorNotImplementedException for com.better.alarm.debug
    io.reactivex.exceptions.OnErrorNotImplementedException: The exception was not handled due to missing onError handler in the subscribe() method call. Further reading: https://github.com/ReactiveX/RxJava/wiki/Error-Handling | java.lang.RuntimeException: Unhandled event: PrealarmDurationChanged
        at io.reactivex.internal.functions.Functions$OnErrorMissingConsumer.accept(Functions.java:704)
        at io.reactivex.internal.functions.Functions$OnErrorMissingConsumer.accept(Functions.java:701)
        at io.reactivex.internal.observers.LambdaObserver.onError(LambdaObserver.java:77)
        at io.reactivex.internal.observers.LambdaObserver.onNext(LambdaObserver.java:67)
        at io.reactivex.internal.operators.observable.ObservableSkip$SkipObserver.onNext(ObservableSkip.java:56)
        at io.reactivex.internal.operators.observable.ObservableMap$MapObserver.onNext(ObservableMap.java:62)
        at io.reactivex.internal.operators.observable.ObservableMap$MapObserver.onNext(ObservableMap.java:62)
        at io.reactivex.internal.operators.observable.ObservableFilter$FilterObserver.onNext(ObservableFilter.java:52)
        at io.reactivex.internal.operators.observable.ObservableConcatMap$ConcatMapDelayErrorObserver$DelayErrorInnerObserver.onNext(ObservableConcatMap.java:506)
        at io.reactivex.internal.operators.observable.ObservableRefCount$RefCountObserver.onNext(ObservableRefCount.java:227)
        at io.reactivex.internal.operators.observable.ObservablePublishAlt$PublishConnection.onNext(ObservablePublishAlt.java:177)
        at io.reactivex.internal.operators.observable.ObservableCreate$CreateEmitter.onNext(ObservableCreate.java:66)
        at com.better.alarm.stores.SharedRxDataStoreFactory$keyChanges$1$listener$1.onSharedPreferenceChanged(SharedRxDataStoreFactory.kt:59)
        at android.app.SharedPreferencesImpl$EditorImpl.notifyListeners(SharedPreferencesImpl.java:637)
        at android.app.SharedPreferencesImpl$EditorImpl.apply(SharedPreferencesImpl.java:511)
        at androidx.preference.Preference.tryCommit(Preference.java:1632)
        at androidx.preference.Preference.persistString(Preference.java:1663)
        at androidx.preference.ListPreference.setValue(ListPreference.java:190)
        at androidx.preference.ListPreferenceDialogFragmentCompat.onDialogClosed(ListPreferenceDialogFragmentCompat.java:108)
        at androidx.preference.PreferenceDialogFragmentCompat.onDismiss(PreferenceDialogFragmentCompat.java:265)
        at androidx.fragment.app.DialogFragment$3.onDismiss(DialogFragment.java:120)
        at android.app.Dialog$ListenersHandler.handleMessage(Dialog.java:1424)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:260)
        at android.app.ActivityThread.main(ActivityThread.java:8260)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:612)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1006)
     Caused by: java.lang.RuntimeException: Unhandled event: PrealarmDurationChanged
        at com.better.alarm.model.AlarmCore$RootState.onEvent(AlarmCore.kt:202)
        at com.better.alarm.model.AlarmCore$RootState.onEvent(AlarmCore.kt:199)
        at com.better.alarm.statemachine.StateMachine.sendEvent(StateMachine.kt:158)
        at com.better.alarm.model.AlarmCore._init_$lambda-0(AlarmCore.kt:149)
        at com.better.alarm.model.AlarmCore.$r8$lambda$tGW0lBtaF0xMDZhI0SuKJFMnBzQ(Unknown Source:0)
        at com.better.alarm.model.AlarmCore$$ExternalSyntheticLambda0.accept(Unknown Source:4)
        at io.reactivex.internal.observers.LambdaObserver.onNext(LambdaObserver.java:63)
        at io.reactivex.internal.operators.observable.ObservableSkip$SkipObserver.onNext(ObservableSkip.java:56) 
        at io.reactivex.internal.operators.observable.ObservableMap$MapObserver.onNext(ObservableMap.java:62) 
        at io.reactivex.internal.operators.observable.ObservableMap$MapObserver.onNext(ObservableMap.java:62) 
        at io.reactivex.internal.operators.observable.ObservableFilter$FilterObserver.onNext(ObservableFilter.java:52) 
        at io.reactivex.internal.operators.observable.ObservableConcatMap$ConcatMapDelayErrorObserver$DelayErrorInnerObserver.onNext(ObservableConcatMap.java:506) 
        at io.reactivex.internal.operators.observable.ObservableRefCount$RefCountObserver.onNext(ObservableRefCount.java:227) 
        at io.reactivex.internal.operators.observable.ObservablePublishAlt$PublishConnection.onNext(ObservablePublishAlt.java:177) 
        at io.reactivex.internal.operators.observable.ObservableCreate$CreateEmitter.onNext(ObservableCreate.java:66) 
        at com.better.alarm.stores.SharedRxDataStoreFactory$keyChanges$1$listener$1.onSharedPreferenceChanged(SharedRxDataStoreFactory.kt:59) 
        at android.app.SharedPreferencesImpl$EditorImpl.notifyListeners(SharedPreferencesImpl.java:637) 
        at android.app.SharedPreferencesImpl$EditorImpl.apply(SharedPreferencesImpl.java:511) 
        at androidx.preference.Preference.tryCommit(Preference.java:1632) 
        at androidx.preference.Preference.persistString(Preference.java:1663) 
        at androidx.preference.ListPreference.setValue(ListPreference.java:190) 
        at androidx.preference.ListPreferenceDialogFragmentCompat.onDialogClosed(ListPreferenceDialogFragmentCompat.java:108) 
        at androidx.preference.PreferenceDialogFragmentCompat.onDismiss(PreferenceDialogFragmentCompat.java:265) 
        at androidx.fragment.app.DialogFragment$3.onDismiss(DialogFragment.java:120) 
        at android.app.Dialog$ListenersHandler.handleMessage(Dialog.java:1424) 
        at android.os.Handler.dispatchMessage(Handler.java:106) 
        at android.os.Looper.loop(Looper.java:260) 
        at android.app.ActivityThread.main(ActivityThread.java:8260) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:612) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1006) 
I/ACRA: Sending report /data/user/0/com.better.alarm.debug/app_ACRA-approved/2021-11-04T11:42:07.884+08:00.stacktrace
W/Bundle: Key android.intent.extra.TEXT expected ArrayList<CharSequence> but value was a java.lang.String.  The default value <null> was returned.
    Attempt to cast generated internal exception:
    java.lang.ClassCastException: java.lang.String cannot be cast to java.util.ArrayList
        at android.os.BaseBundle.getCharSequenceArrayList(BaseBundle.java:1351)
        at android.os.Bundle.getCharSequenceArrayList(Bundle.java:1145)
        at android.content.Intent.getCharSequenceArrayListExtra(Intent.java:8391)
        at android.content.Intent.migrateExtraStreamToClipData(Intent.java:11404)
        at android.app.Instrumentation.execStartActivity(Instrumentation.java:1723)
        at android.app.ContextImpl.startActivity(ContextImpl.java:1059)
        at android.app.ContextImpl.startActivity(ContextImpl.java:1017)
        at android.content.ContextWrapper.startActivity(ContextWrapper.java:413)
        at org.acra.sender.EmailIntentSender.send(EmailIntentSender.java:101)
        at org.acra.sender.ReportSender.send(ReportSender.java:54)
        at org.acra.sender.ReportDistributor.sendCrashReport(ReportDistributor.java:115)
        at org.acra.sender.ReportDistributor.distribute(ReportDistributor.java:80)
        at org.acra.sender.SendingConductor.sendReports(SendingConductor.java:70)
        at org.acra.scheduler.DefaultSenderScheduler.scheduleReportSending(DefaultSenderScheduler.java:70)
        at org.acra.scheduler.SchedulerStarter.scheduleReports(SchedulerStarter.java:66)
        at org.acra.builder.ReportExecutor.sendReport(ReportExecutor.java:248)
        at org.acra.builder.ReportExecutor.execute(ReportExecutor.java:183)
        at org.acra.builder.ReportBuilder.build(ReportBuilder.java:183)
        at org.acra.reporter.ErrorReporterImpl.uncaughtException(ErrorReporterImpl.java:161)
        at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:1073)
        at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:1068)
        at com.better.alarm.bugreports.BugReporter.attachToMainThread$lambda-4(BugReporter.kt:69)
        at com.better.alarm.bugreports.BugReporter.$r8$lambda$rqcnpRaz7fl9d5xns7KsLOxNrcQ(Unknown Source:0)
        at com.better.alarm.bugreports.BugReporter$$ExternalSyntheticLambda0.uncaughtException(Unknown Source:4)
        at io.reactivex.plugins.RxJavaPlugins.uncaught(RxJavaPlugins.java:429)
        at io.reactivex.plugins.RxJavaPlugins.onError(RxJavaPlugins.java:383)
        at io.reactivex.internal.functions.Functions$OnErrorMissingConsumer.accept(Functions.java:704)
        at io.reactivex.internal.functions.Functions$OnErrorMissingConsumer.accept(Functions.java:701)
        at io.reactivex.internal.observers.LambdaObserver.onError(LambdaObserver.java:77)
        at io.reactivex.internal.observers.LambdaObserver.onNext(LambdaObserver.java:67)
        at io.reactivex.internal.operators.observable.ObservableSkip$SkipObserver.onNext(ObservableSkip.java:56)
        at io.reactivex.internal.operators.observable.ObservableMap$MapObserver.onNext(ObservableMap.java:62)
        at io.reactivex.internal.operators.observable.ObservableMap$MapObserver.onNext(ObservableMap.java:62)
        at io.reactivex.internal.operators.observable.ObservableFilter$FilterObserver.onNext(ObservableFilter.java:52)
        at io.reactivex.internal.operators.observable.ObservableConcatMap$ConcatMapDelayErrorObserver$DelayErrorInnerObserver.onNext(ObservableConcatMap.java:506)
        at io.reactivex.internal.operators.observable.ObservableRefCount$RefCountObserver.onNext(ObservableRefCount.java:227)
        at io.reactivex.internal.operators.observable.ObservablePublishAlt$PublishConnection.onNext(ObservablePublishAlt.java:177)
        at io.reactivex.internal.operators.observable.ObservableCreate$CreateEmitter.onNext(ObservableCreate.java:66)
        at com.better.alarm.stores.SharedRxDataStoreFactory$keyChanges$1$listener$1.onSharedPreferenceChanged(SharedRxDataStoreFactory.kt:59)
        at android.app.SharedPreferencesImpl$EditorImpl.notifyListeners(SharedPreferencesImpl.java:637)
        at android.app.SharedPreferencesImpl$EditorImpl.apply(SharedPreferencesImpl.java:511)
        at androidx.preference.Preference.tryCommit(Preference.java:1632)
        at androidx.preference.Preference.persistString(Preference.java:1663)
        at androidx.preference.ListPreference.setValue(ListPreference.java:190)
        at androidx.preference.ListPreferenceDialogFragmentCompat.onDialogClosed(ListPreferenceDialogFragmentCompat.java:108)
        at androidx.preference.PreferenceDialogFragmentCompat.onDismiss(PreferenceDialogFragmentCompat.java:265)
        at androidx.fragment.app.DialogFragment$3.onDismiss(DialogFragment.java:120)
        at android.app.Dialog$ListenersHandler.handleMessage(Dialog.java:1424)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:260)
        at android.app.ActivityThread.main(ActivityThread.java:8260)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:612)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1006)
E/Parcel: Reading a NULL string not supported here.
I/Process: Sending signal. PID: 13767 SIG: 9
yuriykulikov commented 2 years ago

Thanks, I'll check it out!

On Thu, Nov 4, 2021, 06:53 Nriver @.***> wrote:

Describe the bug

App crash when modify "Pre-alarm duration". To Reproduce

Clone the latetest code from repo and build it with Android Studio. Run the app on my phone and modify "Pre-alarm duration" in settings, the app will crash. Logs

Some output in logcat.

D/ViewRootImpl: enqueueInputEventMotionEvent { action=ACTION_DOWN, actionButton=0, id[0]=0, x[0]=393.75, y[0]=552.25, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=103793789, downTime=103793789, deviceId=2, source=0x1002, displayId=0 }

D/ViewRootImpl[SettingsActivity]: processMotionEvent MotionEvent { action=ACTION_DOWN, actionButton=0, id[0]=0, x[0]=393.75, y[0]=552.25, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=103793789, downTime=103793789, deviceId=2, source=0x1002, displayId=0 }

D/ViewRootImpl[SettingsActivity]: dispatchPointerEvent handled=true, event=MotionEvent { action=ACTION_DOWN, actionButton=0, id[0]=0, x[0]=393.75, y[0]=552.25, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=103793789, downTime=103793789, deviceId=2, source=0x1002, displayId=0 }

D/ViewRootImpl[SettingsActivity]: processMotionEvent MotionEvent { action=ACTION_UP, actionButton=0, id[0]=0, x[0]=393.75, y[0]=552.25, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=103793844, downTime=103793789, deviceId=2, source=0x1002, displayId=0 }

D/ViewRootImpl[SettingsActivity]: dispatchPointerEvent handled=true, event=MotionEvent { action=ACTION_UP, actionButton=0, id[0]=0, x[0]=393.75, y[0]=552.25, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=103793844, downTime=103793789, deviceId=2, source=0x1002, displayId=0 }

D/OpenGLRenderer: endAllActiveAnimators on 0xb400007a76d03d00 (AlertController$RecycleListView) with handle 0xb400007ae6681b00

D/AlarmCore: [main] - [Alarm 1] event PrealarmDurationChanged -> (DisabledState > RootState)

W/System.err: io.reactivex.exceptions.OnErrorNotImplementedException: The exception was not handled due to missing onError handler in the subscribe() method call. Further reading: https://github.com/ReactiveX/RxJava/wiki/Error-Handling | java.lang.RuntimeException: Unhandled event: PrealarmDurationChanged

W/System.err: at io.reactivex.internal.functions.Functions$OnErrorMissingConsumer.accept(Functions.java:704)

    at io.reactivex.internal.functions.Functions$OnErrorMissingConsumer.accept(Functions.java:701)

    at io.reactivex.internal.observers.LambdaObserver.onError(LambdaObserver.java:77)

    at io.reactivex.internal.observers.LambdaObserver.onNext(LambdaObserver.java:67)

    at io.reactivex.internal.operators.observable.ObservableSkip$SkipObserver.onNext(ObservableSkip.java:56)

    at io.reactivex.internal.operators.observable.ObservableMap$MapObserver.onNext(ObservableMap.java:62)

    at io.reactivex.internal.operators.observable.ObservableMap$MapObserver.onNext(ObservableMap.java:62)

    at io.reactivex.internal.operators.observable.ObservableFilter$FilterObserver.onNext(ObservableFilter.java:52)

    at io.reactivex.internal.operators.observable.ObservableConcatMap$ConcatMapDelayErrorObserver$DelayErrorInnerObserver.onNext(ObservableConcatMap.java:506)

    at io.reactivex.internal.operators.observable.ObservableRefCount$RefCountObserver.onNext(ObservableRefCount.java:227)

    at io.reactivex.internal.operators.observable.ObservablePublishAlt$PublishConnection.onNext(ObservablePublishAlt.java:177)

    at io.reactivex.internal.operators.observable.ObservableCreate$CreateEmitter.onNext(ObservableCreate.java:66)

    at com.better.alarm.stores.SharedRxDataStoreFactory$keyChanges$1$listener$1.onSharedPreferenceChanged(SharedRxDataStoreFactory.kt:59)

    at android.app.SharedPreferencesImpl$EditorImpl.notifyListeners(SharedPreferencesImpl.java:637)

    at android.app.SharedPreferencesImpl$EditorImpl.apply(SharedPreferencesImpl.java:511)

    at androidx.preference.Preference.tryCommit(Preference.java:1632)

    at androidx.preference.Preference.persistString(Preference.java:1663)

    at androidx.preference.ListPreference.setValue(ListPreference.java:190)

    at androidx.preference.ListPreferenceDialogFragmentCompat.onDialogClosed(ListPreferenceDialogFragmentCompat.java:108)

    at androidx.preference.PreferenceDialogFragmentCompat.onDismiss(PreferenceDialogFragmentCompat.java:265)

    at androidx.fragment.app.DialogFragment$3.onDismiss(DialogFragment.java:120)

    at android.app.Dialog$ListenersHandler.handleMessage(Dialog.java:1424)

    at android.os.Handler.dispatchMessage(Handler.java:106)

    at android.os.Looper.loop(Looper.java:260)

    at android.app.ActivityThread.main(ActivityThread.java:8260)

    at java.lang.reflect.Method.invoke(Native Method)

    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:612)

    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1006)

W/System.err: Caused by: java.lang.RuntimeException: Unhandled event: PrealarmDurationChanged

    at com.better.alarm.model.AlarmCore$RootState.onEvent(AlarmCore.kt:202)

    at com.better.alarm.model.AlarmCore$RootState.onEvent(AlarmCore.kt:199)

    at com.better.alarm.statemachine.StateMachine.sendEvent(StateMachine.kt:158)

    at com.better.alarm.model.AlarmCore._init_$lambda-0(AlarmCore.kt:149)

    at com.better.alarm.model.AlarmCore.$r8$lambda$tGW0lBtaF0xMDZhI0SuKJFMnBzQ(Unknown Source:0)

    at com.better.alarm.model.AlarmCore$$ExternalSyntheticLambda0.accept(Unknown Source:4)

    at io.reactivex.internal.observers.LambdaObserver.onNext(LambdaObserver.java:63)

    ... 24 more

E/BugReporter: [main] - Uncaught exception io.reactivex.exceptions.OnErrorNotImplementedException: The exception was not handled due to missing onError handler in the subscribe() method call. Further reading: https://github.com/ReactiveX/RxJava/wiki/Error-Handling | java.lang.RuntimeException: Unhandled event: PrealarmDurationChanged

io.reactivex.exceptions.OnErrorNotImplementedException: The exception was not handled due to missing onError handler in the subscribe() method call. Further reading: https://github.com/ReactiveX/RxJava/wiki/Error-Handling | java.lang.RuntimeException: Unhandled event: PrealarmDurationChanged

    at io.reactivex.internal.functions.Functions$OnErrorMissingConsumer.accept(Functions.java:704)

    at io.reactivex.internal.functions.Functions$OnErrorMissingConsumer.accept(Functions.java:701)

    at io.reactivex.internal.observers.LambdaObserver.onError(LambdaObserver.java:77)

    at io.reactivex.internal.observers.LambdaObserver.onNext(LambdaObserver.java:67)

    at io.reactivex.internal.operators.observable.ObservableSkip$SkipObserver.onNext(ObservableSkip.java:56)

    at io.reactivex.internal.operators.observable.ObservableMap$MapObserver.onNext(ObservableMap.java:62)

    at io.reactivex.internal.operators.observable.ObservableMap$MapObserver.onNext(ObservableMap.java:62)

    at io.reactivex.internal.operators.observable.ObservableFilter$FilterObserver.onNext(ObservableFilter.java:52)

    at io.reactivex.internal.operators.observable.ObservableConcatMap$ConcatMapDelayErrorObserver$DelayErrorInnerObserver.onNext(ObservableConcatMap.java:506)

    at io.reactivex.internal.operators.observable.ObservableRefCount$RefCountObserver.onNext(ObservableRefCount.java:227)

    at io.reactivex.internal.operators.observable.ObservablePublishAlt$PublishConnection.onNext(ObservablePublishAlt.java:177)

    at io.reactivex.internal.operators.observable.ObservableCreate$CreateEmitter.onNext(ObservableCreate.java:66)

    at com.better.alarm.stores.SharedRxDataStoreFactory$keyChanges$1$listener$1.onSharedPreferenceChanged(SharedRxDataStoreFactory.kt:59)

    at android.app.SharedPreferencesImpl$EditorImpl.notifyListeners(SharedPreferencesImpl.java:637)

    at android.app.SharedPreferencesImpl$EditorImpl.apply(SharedPreferencesImpl.java:511)

    at androidx.preference.Preference.tryCommit(Preference.java:1632)

    at androidx.preference.Preference.persistString(Preference.java:1663)

    at androidx.preference.ListPreference.setValue(ListPreference.java:190)

    at androidx.preference.ListPreferenceDialogFragmentCompat.onDialogClosed(ListPreferenceDialogFragmentCompat.java:108)

    at androidx.preference.PreferenceDialogFragmentCompat.onDismiss(PreferenceDialogFragmentCompat.java:265)

    at androidx.fragment.app.DialogFragment$3.onDismiss(DialogFragment.java:120)

    at android.app.Dialog$ListenersHandler.handleMessage(Dialog.java:1424)

    at android.os.Handler.dispatchMessage(Handler.java:106)

    at android.os.Looper.loop(Looper.java:260)

    at android.app.ActivityThread.main(ActivityThread.java:8260)

    at java.lang.reflect.Method.invoke(Native Method)

    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:612)

    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1006)

 Caused by: java.lang.RuntimeException: Unhandled event: PrealarmDurationChanged

    at com.better.alarm.model.AlarmCore$RootState.onEvent(AlarmCore.kt:202)

    at com.better.alarm.model.AlarmCore$RootState.onEvent(AlarmCore.kt:199)

    at com.better.alarm.statemachine.StateMachine.sendEvent(StateMachine.kt:158)

    at com.better.alarm.model.AlarmCore._init_$lambda-0(AlarmCore.kt:149)

    at com.better.alarm.model.AlarmCore.$r8$lambda$tGW0lBtaF0xMDZhI0SuKJFMnBzQ(Unknown Source:0)

    at com.better.alarm.model.AlarmCore$$ExternalSyntheticLambda0.accept(Unknown Source:4)

    at io.reactivex.internal.observers.LambdaObserver.onNext(LambdaObserver.java:63)

    ... 24 common frames omitted

I/ACRA: Sending report /data/user/0/com.better.alarm.debug/app_ACRA-approved/2021-11-04T11:42:07.838+08:00.stacktrace

W/Bundle: Key android.intent.extra.TEXT expected ArrayList but value was a java.lang.String. The default value was returned.

W/Bundle: Attempt to cast generated internal exception:

java.lang.ClassCastException: java.lang.String cannot be cast to java.util.ArrayList

    at android.os.BaseBundle.getCharSequenceArrayList(BaseBundle.java:1351)

    at android.os.Bundle.getCharSequenceArrayList(Bundle.java:1145)

    at android.content.Intent.getCharSequenceArrayListExtra(Intent.java:8391)

    at android.content.Intent.migrateExtraStreamToClipData(Intent.java:11404)

    at android.app.Instrumentation.execStartActivity(Instrumentation.java:1723)

    at android.app.ContextImpl.startActivity(ContextImpl.java:1059)

    at android.app.ContextImpl.startActivity(ContextImpl.java:1017)

    at android.content.ContextWrapper.startActivity(ContextWrapper.java:413)

    at org.acra.sender.EmailIntentSender.send(EmailIntentSender.java:101)

    at org.acra.sender.ReportSender.send(ReportSender.java:54)

    at org.acra.sender.ReportDistributor.sendCrashReport(ReportDistributor.java:115)

    at org.acra.sender.ReportDistributor.distribute(ReportDistributor.java:80)

    at org.acra.sender.SendingConductor.sendReports(SendingConductor.java:70)

    at org.acra.scheduler.DefaultSenderScheduler.scheduleReportSending(DefaultSenderScheduler.java:70)

    at org.acra.scheduler.SchedulerStarter.scheduleReports(SchedulerStarter.java:66)

    at org.acra.builder.ReportExecutor.sendReport(ReportExecutor.java:248)

    at org.acra.builder.ReportExecutor.execute(ReportExecutor.java:183)

    at org.acra.builder.ReportBuilder.build(ReportBuilder.java:183)

    at org.acra.reporter.ErrorReporterImpl.handleException(ErrorReporterImpl.java:206)

    at org.acra.reporter.ErrorReporterImpl.handleException(ErrorReporterImpl.java:214)

    at com.better.alarm.bugreports.BugReporter.attachToMainThread$lambda-4(BugReporter.kt:68)

    at com.better.alarm.bugreports.BugReporter.$r8$lambda$rqcnpRaz7fl9d5xns7KsLOxNrcQ(Unknown Source:0)

    at com.better.alarm.bugreports.BugReporter$$ExternalSyntheticLambda0.uncaughtException(Unknown Source:4)

    at io.reactivex.plugins.RxJavaPlugins.uncaught(RxJavaPlugins.java:429)

    at io.reactivex.plugins.RxJavaPlugins.onError(RxJavaPlugins.java:383)

    at io.reactivex.internal.functions.Functions$OnErrorMissingConsumer.accept(Functions.java:704)

    at io.reactivex.internal.functions.Functions$OnErrorMissingConsumer.accept(Functions.java:701)

    at io.reactivex.internal.observers.LambdaObserver.onError(LambdaObserver.java:77)

    at io.reactivex.internal.observers.LambdaObserver.onNext(LambdaObserver.java:67)

    at io.reactivex.internal.operators.observable.ObservableSkip$SkipObserver.onNext(ObservableSkip.java:56)

    at io.reactivex.internal.operators.observable.ObservableMap$MapObserver.onNext(ObservableMap.java:62)

    at io.reactivex.internal.operators.observable.ObservableMap$MapObserver.onNext(ObservableMap.java:62)

    at io.reactivex.internal.operators.observable.ObservableFilter$FilterObserver.onNext(ObservableFilter.java:52)

    at io.reactivex.internal.operators.observable.ObservableConcatMap$ConcatMapDelayErrorObserver$DelayErrorInnerObserver.onNext(ObservableConcatMap.java:506)

    at io.reactivex.internal.operators.observable.ObservableRefCount$RefCountObserver.onNext(ObservableRefCount.java:227)

    at io.reactivex.internal.operators.observable.ObservablePublishAlt$PublishConnection.onNext(ObservablePublishAlt.java:177)

    at io.reactivex.internal.operators.observable.ObservableCreate$CreateEmitter.onNext(ObservableCreate.java:66)

    at com.better.alarm.stores.SharedRxDataStoreFactory$keyChanges$1$listener$1.onSharedPreferenceChanged(SharedRxDataStoreFactory.kt:59)

    at android.app.SharedPreferencesImpl$EditorImpl.notifyListeners(SharedPreferencesImpl.java:637)

    at android.app.SharedPreferencesImpl$EditorImpl.apply(SharedPreferencesImpl.java:511)

    at androidx.preference.Preference.tryCommit(Preference.java:1632)

    at androidx.preference.Preference.persistString(Preference.java:1663)

    at androidx.preference.ListPreference.setValue(ListPreference.java:190)

    at androidx.preference.ListPreferenceDialogFragmentCompat.onDialogClosed(ListPreferenceDialogFragmentCompat.java:108)

    at androidx.preference.PreferenceDialogFragmentCompat.onDismiss(PreferenceDialogFragmentCompat.java:265)

    at androidx.fragment.app.DialogFragment$3.onDismiss(DialogFragment.java:120)

    at android.app.Dialog$ListenersHandler.handleMessage(Dialog.java:1424)

    at android.os.Handler.dispatchMessage(Handler.java:106)

    at android.os.Looper.loop(Looper.java:260)

    at android.app.ActivityThread.main(ActivityThread.java:8260)

    at java.lang.reflect.Method.invoke(Native Method)

    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:612)

    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1006)

E/Parcel: Reading a NULL string not supported here.

E/ACRA: ACRA caught a OnErrorNotImplementedException for com.better.alarm.debug

io.reactivex.exceptions.OnErrorNotImplementedException: The exception was not handled due to missing onError handler in the subscribe() method call. Further reading: https://github.com/ReactiveX/RxJava/wiki/Error-Handling | java.lang.RuntimeException: Unhandled event: PrealarmDurationChanged

    at io.reactivex.internal.functions.Functions$OnErrorMissingConsumer.accept(Functions.java:704)

    at io.reactivex.internal.functions.Functions$OnErrorMissingConsumer.accept(Functions.java:701)

    at io.reactivex.internal.observers.LambdaObserver.onError(LambdaObserver.java:77)

    at io.reactivex.internal.observers.LambdaObserver.onNext(LambdaObserver.java:67)

    at io.reactivex.internal.operators.observable.ObservableSkip$SkipObserver.onNext(ObservableSkip.java:56)

    at io.reactivex.internal.operators.observable.ObservableMap$MapObserver.onNext(ObservableMap.java:62)

    at io.reactivex.internal.operators.observable.ObservableMap$MapObserver.onNext(ObservableMap.java:62)

    at io.reactivex.internal.operators.observable.ObservableFilter$FilterObserver.onNext(ObservableFilter.java:52)

    at io.reactivex.internal.operators.observable.ObservableConcatMap$ConcatMapDelayErrorObserver$DelayErrorInnerObserver.onNext(ObservableConcatMap.java:506)

    at io.reactivex.internal.operators.observable.ObservableRefCount$RefCountObserver.onNext(ObservableRefCount.java:227)

    at io.reactivex.internal.operators.observable.ObservablePublishAlt$PublishConnection.onNext(ObservablePublishAlt.java:177)

    at io.reactivex.internal.operators.observable.ObservableCreate$CreateEmitter.onNext(ObservableCreate.java:66)

    at com.better.alarm.stores.SharedRxDataStoreFactory$keyChanges$1$listener$1.onSharedPreferenceChanged(SharedRxDataStoreFactory.kt:59)

    at android.app.SharedPreferencesImpl$EditorImpl.notifyListeners(SharedPreferencesImpl.java:637)

    at android.app.SharedPreferencesImpl$EditorImpl.apply(SharedPreferencesImpl.java:511)

    at androidx.preference.Preference.tryCommit(Preference.java:1632)

    at androidx.preference.Preference.persistString(Preference.java:1663)

    at androidx.preference.ListPreference.setValue(ListPreference.java:190)

    at androidx.preference.ListPreferenceDialogFragmentCompat.onDialogClosed(ListPreferenceDialogFragmentCompat.java:108)

    at androidx.preference.PreferenceDialogFragmentCompat.onDismiss(PreferenceDialogFragmentCompat.java:265)

    at androidx.fragment.app.DialogFragment$3.onDismiss(DialogFragment.java:120)

    at android.app.Dialog$ListenersHandler.handleMessage(Dialog.java:1424)

    at android.os.Handler.dispatchMessage(Handler.java:106)

    at android.os.Looper.loop(Looper.java:260)

    at android.app.ActivityThread.main(ActivityThread.java:8260)

    at java.lang.reflect.Method.invoke(Native Method)

    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:612)

    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1006)

 Caused by: java.lang.RuntimeException: Unhandled event: PrealarmDurationChanged

    at com.better.alarm.model.AlarmCore$RootState.onEvent(AlarmCore.kt:202)

    at com.better.alarm.model.AlarmCore$RootState.onEvent(AlarmCore.kt:199)

    at com.better.alarm.statemachine.StateMachine.sendEvent(StateMachine.kt:158)

    at com.better.alarm.model.AlarmCore._init_$lambda-0(AlarmCore.kt:149)

    at com.better.alarm.model.AlarmCore.$r8$lambda$tGW0lBtaF0xMDZhI0SuKJFMnBzQ(Unknown Source:0)

    at com.better.alarm.model.AlarmCore$$ExternalSyntheticLambda0.accept(Unknown Source:4)

    at io.reactivex.internal.observers.LambdaObserver.onNext(LambdaObserver.java:63)

    at io.reactivex.internal.operators.observable.ObservableSkip$SkipObserver.onNext(ObservableSkip.java:56)

    at io.reactivex.internal.operators.observable.ObservableMap$MapObserver.onNext(ObservableMap.java:62)

    at io.reactivex.internal.operators.observable.ObservableMap$MapObserver.onNext(ObservableMap.java:62)

    at io.reactivex.internal.operators.observable.ObservableFilter$FilterObserver.onNext(ObservableFilter.java:52)

    at io.reactivex.internal.operators.observable.ObservableConcatMap$ConcatMapDelayErrorObserver$DelayErrorInnerObserver.onNext(ObservableConcatMap.java:506)

    at io.reactivex.internal.operators.observable.ObservableRefCount$RefCountObserver.onNext(ObservableRefCount.java:227)

    at io.reactivex.internal.operators.observable.ObservablePublishAlt$PublishConnection.onNext(ObservablePublishAlt.java:177)

    at io.reactivex.internal.operators.observable.ObservableCreate$CreateEmitter.onNext(ObservableCreate.java:66)

    at com.better.alarm.stores.SharedRxDataStoreFactory$keyChanges$1$listener$1.onSharedPreferenceChanged(SharedRxDataStoreFactory.kt:59)

    at android.app.SharedPreferencesImpl$EditorImpl.notifyListeners(SharedPreferencesImpl.java:637)

    at android.app.SharedPreferencesImpl$EditorImpl.apply(SharedPreferencesImpl.java:511)

    at androidx.preference.Preference.tryCommit(Preference.java:1632)

    at androidx.preference.Preference.persistString(Preference.java:1663)

    at androidx.preference.ListPreference.setValue(ListPreference.java:190)

    at androidx.preference.ListPreferenceDialogFragmentCompat.onDialogClosed(ListPreferenceDialogFragmentCompat.java:108)

    at androidx.preference.PreferenceDialogFragmentCompat.onDismiss(PreferenceDialogFragmentCompat.java:265)

    at androidx.fragment.app.DialogFragment$3.onDismiss(DialogFragment.java:120)

    at android.app.Dialog$ListenersHandler.handleMessage(Dialog.java:1424)

    at android.os.Handler.dispatchMessage(Handler.java:106)

    at android.os.Looper.loop(Looper.java:260)

    at android.app.ActivityThread.main(ActivityThread.java:8260)

    at java.lang.reflect.Method.invoke(Native Method)

    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:612)

    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1006)

I/ACRA: Sending report /data/user/0/com.better.alarm.debug/app_ACRA-approved/2021-11-04T11:42:07.884+08:00.stacktrace

W/Bundle: Key android.intent.extra.TEXT expected ArrayList but value was a java.lang.String. The default value was returned.

Attempt to cast generated internal exception:

java.lang.ClassCastException: java.lang.String cannot be cast to java.util.ArrayList

    at android.os.BaseBundle.getCharSequenceArrayList(BaseBundle.java:1351)

    at android.os.Bundle.getCharSequenceArrayList(Bundle.java:1145)

    at android.content.Intent.getCharSequenceArrayListExtra(Intent.java:8391)

    at android.content.Intent.migrateExtraStreamToClipData(Intent.java:11404)

    at android.app.Instrumentation.execStartActivity(Instrumentation.java:1723)

    at android.app.ContextImpl.startActivity(ContextImpl.java:1059)

    at android.app.ContextImpl.startActivity(ContextImpl.java:1017)

    at android.content.ContextWrapper.startActivity(ContextWrapper.java:413)

    at org.acra.sender.EmailIntentSender.send(EmailIntentSender.java:101)

    at org.acra.sender.ReportSender.send(ReportSender.java:54)

    at org.acra.sender.ReportDistributor.sendCrashReport(ReportDistributor.java:115)

    at org.acra.sender.ReportDistributor.distribute(ReportDistributor.java:80)

    at org.acra.sender.SendingConductor.sendReports(SendingConductor.java:70)

    at org.acra.scheduler.DefaultSenderScheduler.scheduleReportSending(DefaultSenderScheduler.java:70)

    at org.acra.scheduler.SchedulerStarter.scheduleReports(SchedulerStarter.java:66)

    at org.acra.builder.ReportExecutor.sendReport(ReportExecutor.java:248)

    at org.acra.builder.ReportExecutor.execute(ReportExecutor.java:183)

    at org.acra.builder.ReportBuilder.build(ReportBuilder.java:183)

    at org.acra.reporter.ErrorReporterImpl.uncaughtException(ErrorReporterImpl.java:161)

    at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:1073)

    at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:1068)

    at com.better.alarm.bugreports.BugReporter.attachToMainThread$lambda-4(BugReporter.kt:69)

    at com.better.alarm.bugreports.BugReporter.$r8$lambda$rqcnpRaz7fl9d5xns7KsLOxNrcQ(Unknown Source:0)

    at com.better.alarm.bugreports.BugReporter$$ExternalSyntheticLambda0.uncaughtException(Unknown Source:4)

    at io.reactivex.plugins.RxJavaPlugins.uncaught(RxJavaPlugins.java:429)

    at io.reactivex.plugins.RxJavaPlugins.onError(RxJavaPlugins.java:383)

    at io.reactivex.internal.functions.Functions$OnErrorMissingConsumer.accept(Functions.java:704)

    at io.reactivex.internal.functions.Functions$OnErrorMissingConsumer.accept(Functions.java:701)

    at io.reactivex.internal.observers.LambdaObserver.onError(LambdaObserver.java:77)

    at io.reactivex.internal.observers.LambdaObserver.onNext(LambdaObserver.java:67)

    at io.reactivex.internal.operators.observable.ObservableSkip$SkipObserver.onNext(ObservableSkip.java:56)

    at io.reactivex.internal.operators.observable.ObservableMap$MapObserver.onNext(ObservableMap.java:62)

    at io.reactivex.internal.operators.observable.ObservableMap$MapObserver.onNext(ObservableMap.java:62)

    at io.reactivex.internal.operators.observable.ObservableFilter$FilterObserver.onNext(ObservableFilter.java:52)

    at io.reactivex.internal.operators.observable.ObservableConcatMap$ConcatMapDelayErrorObserver$DelayErrorInnerObserver.onNext(ObservableConcatMap.java:506)

    at io.reactivex.internal.operators.observable.ObservableRefCount$RefCountObserver.onNext(ObservableRefCount.java:227)

    at io.reactivex.internal.operators.observable.ObservablePublishAlt$PublishConnection.onNext(ObservablePublishAlt.java:177)

    at io.reactivex.internal.operators.observable.ObservableCreate$CreateEmitter.onNext(ObservableCreate.java:66)

    at com.better.alarm.stores.SharedRxDataStoreFactory$keyChanges$1$listener$1.onSharedPreferenceChanged(SharedRxDataStoreFactory.kt:59)

    at android.app.SharedPreferencesImpl$EditorImpl.notifyListeners(SharedPreferencesImpl.java:637)

    at android.app.SharedPreferencesImpl$EditorImpl.apply(SharedPreferencesImpl.java:511)

    at androidx.preference.Preference.tryCommit(Preference.java:1632)

    at androidx.preference.Preference.persistString(Preference.java:1663)

    at androidx.preference.ListPreference.setValue(ListPreference.java:190)

    at androidx.preference.ListPreferenceDialogFragmentCompat.onDialogClosed(ListPreferenceDialogFragmentCompat.java:108)

    at androidx.preference.PreferenceDialogFragmentCompat.onDismiss(PreferenceDialogFragmentCompat.java:265)

    at androidx.fragment.app.DialogFragment$3.onDismiss(DialogFragment.java:120)

    at android.app.Dialog$ListenersHandler.handleMessage(Dialog.java:1424)

    at android.os.Handler.dispatchMessage(Handler.java:106)

    at android.os.Looper.loop(Looper.java:260)

    at android.app.ActivityThread.main(ActivityThread.java:8260)

    at java.lang.reflect.Method.invoke(Native Method)

    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:612)

    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1006)

E/Parcel: Reading a NULL string not supported here.

I/Process: Sending signal. PID: 13767 SIG: 9

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/yuriykulikov/AlarmClock/issues/389, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAGKDEUC42XUQGW3S4DHE33UKINUPANCNFSM5HKUOVJQ .

yuriykulikov commented 2 years ago

Ok, this is reproduced when there is at least one disabled alarm AND we are in the debug mode. Production is not affected by this issue.