What happened?
I am encountering a fatal crash on Android when the application is closed, minimized, or destroyed by the OS. The crash originates from the OneSignal SDK during the onDetachedFromEngine lifecycle event, specifically throwing an IllegalStateException because it attempts to call getNotifications without proper initialization context.
This issue only started occurring after updating the OneSignal-Android-SDK from version 5.8.1 to 5.9.2. The previous version (5.8.1) handled the app termination lifecycle without throwing this exception.
Stack Trace:
Exception java.lang.RuntimeException:
at android.app.ActivityThread.performDestroyActivity (ActivityThread.java:7003)
at android.app.ActivityThread.handleDestroyActivity (ActivityThread.java:7035)
at android.app.servertransaction.DestroyActivityItem.execute (DestroyActivityItem.java:52)
at android.app.servertransaction.ActivityTransactionItem.execute (ActivityTransactionItem.java:63)
at android.app.servertransaction.TransactionExecutor.executeLifecycleItem (TransactionExecutor.java:169)
at android.app.servertransaction.TransactionExecutor.executeTransactionItems (TransactionExecutor.java:101)
at android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:80)
at android.app.ActivityThread$H.handleMessage (ActivityThread.java:3150)
at android.os.Handler.dispatchMessage (Handler.java:110)
at android.os.Looper.loopOnce (Looper.java:273)
at android.os.Looper.loop (Looper.java:363)
at android.app.ActivityThread.main (ActivityThread.java:10060)
at java.lang.reflect.Method.invoke
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:632)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:975)
Caused by java.lang.IllegalStateException: Must call 'initWithContext' before use
at com.onesignal.internal.OneSignalImp.getServiceWithFeatureGate (OneSignalImp.kt:727)
at com.onesignal.internal.OneSignalImp.getNotifications (OneSignalImp.kt:130)
at com.onesignal.OneSignal.getNotifications (OneSignal.kt:62)
at com.onesignal.flutter.OneSignalNotifications.onDetachedFromEngine (OneSignalNotifications.java:233)
at com.onesignal.flutter.OneSignalPlugin.onDetachedFromEngine (OneSignalPlugin.java:52)
at com.onesignal.flutter.OneSignalPlugin.onDetachedFromEngine (OneSignalPlugin.java:48)
at io.flutter.embedding.engine.FlutterEngineConnectionRegistry.remove (FlutterEngineConnectionRegistry.java:272)
at io.flutter.embedding.engine.FlutterEngineConnectionRegistry.remove (FlutterEngineConnectionRegistry.java:280)
at io.flutter.embedding.engine.FlutterEngineConnectionRegistry.removeAll (FlutterEngineConnectionRegistry.java:288)
at io.flutter.embedding.engine.FlutterEngineConnectionRegistry.destroy (FlutterEngineConnectionRegistry.java:123)
at io.flutter.embedding.engine.FlutterEngine.destroy (FlutterEngine.java:509)
at io.flutter.embedding.android.FlutterActivityAndFragmentDelegate.onDetach (FlutterActivityAndFragmentDelegate.java:784)
at io.flutter.embedding.android.FlutterActivity.onDestroy (FlutterActivity.java:921)
at android.app.Activity.performDestroy (Activity.java:9850)
at android.app.Instrumentation.callActivityOnDestroy (Instrumentation.java:1559)
at android.app.ActivityThread.performDestroyActivity (ActivityThread.java:6990)
Steps to reproduce?
1- Open the application.
2- Trigger the app destruction (e.g., closing the app, swiping it away from recents, or simulating an OS-level kill).
3- The app crashes during the FlutterEngine detachment process.
What did you expect to happen?
works without error
OneSignal Flutter SDK version
5.5.5
Which platform(s) are affected?
Relevant log output
Exception java.lang.RuntimeException:
at android.app.ActivityThread.performDestroyActivity (ActivityThread.java:7003)
at android.app.ActivityThread.handleDestroyActivity (ActivityThread.java:7035)
at android.app.servertransaction.DestroyActivityItem.execute (DestroyActivityItem.java:52)
at android.app.servertransaction.ActivityTransactionItem.execute (ActivityTransactionItem.java:63)
at android.app.servertransaction.TransactionExecutor.executeLifecycleItem (TransactionExecutor.java:169)
at android.app.servertransaction.TransactionExecutor.executeTransactionItems (TransactionExecutor.java:101)
at android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:80)
at android.app.ActivityThread$H.handleMessage (ActivityThread.java:3150)
at android.os.Handler.dispatchMessage (Handler.java:110)
at android.os.Looper.loopOnce (Looper.java:273)
at android.os.Looper.loop (Looper.java:363)
at android.app.ActivityThread.main (ActivityThread.java:10060)
at java.lang.reflect.Method.invoke
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:632)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:975)
Caused by java.lang.IllegalStateException: Must call 'initWithContext' before use
at com.onesignal.internal.OneSignalImp.getServiceWithFeatureGate (OneSignalImp.kt:727)
at com.onesignal.internal.OneSignalImp.getNotifications (OneSignalImp.kt:130)
at com.onesignal.OneSignal.getNotifications (OneSignal.kt:62)
at com.onesignal.flutter.OneSignalNotifications.onDetachedFromEngine (OneSignalNotifications.java:233)
at com.onesignal.flutter.OneSignalPlugin.onDetachedFromEngine (OneSignalPlugin.java:52)
at com.onesignal.flutter.OneSignalPlugin.onDetachedFromEngine (OneSignalPlugin.java:48)
at io.flutter.embedding.engine.FlutterEngineConnectionRegistry.remove (FlutterEngineConnectionRegistry.java:272)
at io.flutter.embedding.engine.FlutterEngineConnectionRegistry.remove (FlutterEngineConnectionRegistry.java:280)
at io.flutter.embedding.engine.FlutterEngineConnectionRegistry.removeAll (FlutterEngineConnectionRegistry.java:288)
at io.flutter.embedding.engine.FlutterEngineConnectionRegistry.destroy (FlutterEngineConnectionRegistry.java:123)
at io.flutter.embedding.engine.FlutterEngine.destroy (FlutterEngine.java:509)
at io.flutter.embedding.android.FlutterActivityAndFragmentDelegate.onDetach (FlutterActivityAndFragmentDelegate.java:784)
at io.flutter.embedding.android.FlutterActivity.onDestroy (FlutterActivity.java:921)
at android.app.Activity.performDestroy (Activity.java:9850)
at android.app.Instrumentation.callActivityOnDestroy (Instrumentation.java:1559)
at android.app.ActivityThread.performDestroyActivity (ActivityThread.java:6990)
Code of Conduct
What happened?
I am encountering a fatal crash on Android when the application is closed, minimized, or destroyed by the OS. The crash originates from the OneSignal SDK during the onDetachedFromEngine lifecycle event, specifically throwing an IllegalStateException because it attempts to call getNotifications without proper initialization context.
This issue only started occurring after updating the OneSignal-Android-SDK from version 5.8.1 to 5.9.2. The previous version (5.8.1) handled the app termination lifecycle without throwing this exception.
Stack Trace:
Steps to reproduce?
What did you expect to happen?
works without error
OneSignal Flutter SDK version
5.5.5
Which platform(s) are affected?
Relevant log output
Code of Conduct