Repository navigation
[Bug]: [Crash] IllegalStateException: Must call 'initWithContext' before use on Activity Destroy / Engine Detach #2654
Description
What happened?
Description
I am experiencing a crash on Android when the app's Activity is destroyed. I am using the onesignal_flutter SDK, and this issue started occurring immediately after the underlying OneSignal-Android-SDK was updated from version 5.8.1 to 5.9.2.
When the Flutter Engine is detached, the wrapper calls native methods to clean up, which ultimately calls OneSignal.getNotifications(). This triggers an IllegalStateException: Must call 'initWithContext' before use in the native Android SDK (OneSignalImp.kt), crashing the app during the shutdown/detach process.
It seems the native SDK (as of 5.9.2) needs a safety check (state/context verification) before attempting to retrieve the notifications service during a teardown lifecycle event.
Environment
- Platform: Android
- OneSignal-Android-SDK Version:
5.9.2(Previous working version:5.8.1) - OneSignal Flutter SDK Version:
5.5.5
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. Build an Android app using `onesignal_flutter: 5.5.5` and `OneSignal-Android-SDK: 5.9.2`.
2. Launch the application.
3. Close the application or trigger the Activity `onDestroy` lifecycle.
4. The crash occurs natively when the Flutter engine attempts to detach the plugins.What did you expect to happen?
works without crash
OneSignal Android SDK version
Release 5.9.2
Android version
15
Specific Android models
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
- I agree to follow this project's Code of Conduct
Activity
nan-li commentedon May 27, 2026
Hi @escolhatecnologia thanks for reporting, I see it is already reported in our Flutter SDK where the calls originate, we will track this issue there OneSignal/OneSignal-Flutter-SDK#1149