11package com.mendix.mendixnative
22
33import android.app.Activity
4- import android.view.MotionEvent
54import com.facebook.react.ReactHost
6- import com.facebook.react.common.ShakeDetector
75import com.facebook.react.devsupport.DevSupportManagerBase
8- import com.facebook.react.devsupport.attachMendixSupportManagerShakeDetector
9- import com.facebook.react.devsupport.makeShakeDetector
106import com.facebook.react.modules.network.OkHttpClientProvider
117import com.mendix.mendixnative.config.AppPreferences
12- import com.mendix.mendixnative.handler.DevMenuTouchEventHandler
138import com.mendix.mendixnative.react.*
149import com.mendix.mendixnative.request.MendixNetworkInterceptor
1510import com.mendix.mendixnative.util.CookieEncryption
@@ -23,8 +18,6 @@ class MendixInitializer(
2318 private val reactHost : ReactHost ,
2419 private val hasRNDeveloperSupport : Boolean = false ,
2520) {
26- private var shakeDetector: ShakeDetector ? = null
27- private var devMenuTouchEventHandler: DevMenuTouchEventHandler ? = null
2821
2922 fun onCreate (mendixApp : MendixApp , clearData : Boolean ) {
3023 // Assign mendix xas id interceptor to okhttp
@@ -41,17 +34,15 @@ class MendixInitializer(
4134 MxConfiguration .runtimeUrl = runtimeUrl
4235 MxConfiguration .warningsFilter = mendixApp.warningsFilter
4336
44- // Destroy any existing ReactInstance so we start fresh, but do NOT invalidate —
45- // invalidate() is terminal in bridgeless mode and prevents the host from ever being reused.
46- reactHost.destroy(" Clean start for new Mendix app" , null )
37+ // Reload only if there's already a running instance.
38+ if (reactHost.currentReactContext != null ) {
39+ reactHost.reload(" Clean start for new Mendix app" )
40+ }
4741 if (clearData) clearData(context.application)
4842 if (hasRNDeveloperSupport) setupDeveloperApp(runtimeUrl, mendixApp)
4943 }
5044
5145 fun onDestroy () {
52- // Stop shaking as early as possible to avoid orphaned dialogs
53- stopShakeDetector()
54-
5546 if (hasRNDeveloperSupport) {
5647 AppPreferences (context.applicationContext).setElementInspector(false )
5748 }
@@ -64,26 +55,6 @@ class MendixInitializer(
6455 closeSqlDatabaseConnection(reactHost.currentReactContext)
6556 }
6657
67- fun stopShakeDetector () {
68- shakeDetector?.stop()
69- }
70-
71- fun dispatchTouchEvent (ev : MotionEvent ? ): Boolean {
72- return devMenuTouchEventHandler?.handle(ev) ? : false
73- }
74-
75- private fun attachShakeDetector (devAppMenuHandler : DevAppMenuHandler ) {
76- if (shakeDetector == null ) {
77- shakeDetector = makeShakeDetector(context.applicationContext) {
78- devAppMenuHandler.showDevAppMenu()
79- }
80- }
81-
82- (reactHost.devSupportManager as ? DevSupportManagerBase )?.run {
83- attachMendixSupportManagerShakeDetector(shakeDetector!! , this )
84- }
85- }
86-
8758 private fun setupDeveloperApp (
8859 runtimeUrl : String ,
8960 mendixApp : MendixApp
0 commit comments