diff --git a/packages/core/application/index.android.ts b/packages/core/application/index.android.ts index 19f671b8b..99eecd608 100644 --- a/packages/core/application/index.android.ts +++ b/packages/core/application/index.android.ts @@ -373,6 +373,7 @@ function initLifecycleCallbacks() { }); let activitiesStarted = 0; + let nativescriptActivity: androidx.appcompat.app.AppCompatActivity = undefined; const lifecycleCallbacks = new android.app.Application.ActivityLifecycleCallbacks({ onActivityCreated: profile('onActivityCreated', function (activity: androidx.appcompat.app.AppCompatActivity, savedInstanceState: android.os.Bundle) { @@ -382,6 +383,10 @@ function initLifecycleCallbacks() { androidApp.startActivity = activity; } + if (!nativescriptActivity && (activity)?.isNativeScriptActivity) { + nativescriptActivity = activity; + } + notifyActivityCreated(activity, savedInstanceState, undefined); if (appCommon.hasListeners(appCommon.displayedEvent)) { @@ -394,8 +399,17 @@ function initLifecycleCallbacks() { androidApp.foregroundActivity = undefined; } + if (activity === nativescriptActivity) { + nativescriptActivity = undefined; + } + if (activity === androidApp.startActivity) { androidApp.startActivity = undefined; + + // Fallback for start activity when it is destroyed but we have a known nativescript activity + if (nativescriptActivity) { + androidApp.startActivity = nativescriptActivity; + } } androidApp.notify({