Skip to content

[Bug]: [Crash] IllegalStateException: Must call 'initWithContext' before use on Activity Destroy / Engine Detach #2654

Closed as duplicate

Description

@escolhatecnologia

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

  1. nan-li commented on May 27, 2026

    @nan-li
    Contributor

    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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions