diff --git a/android/app/src/main/java/com/facebook/react/runtime/ReactHostHelper.kt b/android/app/src/main/java/com/facebook/react/runtime/ReactHostHelper.kt index 26d8c24..c79108a 100644 --- a/android/app/src/main/java/com/facebook/react/runtime/ReactHostHelper.kt +++ b/android/app/src/main/java/com/facebook/react/runtime/ReactHostHelper.kt @@ -12,6 +12,7 @@ class ReactHostHelper( task.waitForCompletion() return task.getResult() } + fun getOrCreateReactInstance() { delegate.isInstanceInitialized } diff --git a/android/app/src/main/java/com/trust/ywx/AppManager.kt b/android/app/src/main/java/com/trust/ywx/AppManager.kt index e954660..d01a290 100644 --- a/android/app/src/main/java/com/trust/ywx/AppManager.kt +++ b/android/app/src/main/java/com/trust/ywx/AppManager.kt @@ -13,16 +13,20 @@ object AppManager { activityStack.remove(activity) } - fun finishActivity(activity: Activity?) { + fun finishActivity(activity: Activity?): Activity? { if (activity != null) { removeActivity(activity) activity.finish() + return activity } else { lastActivity()?.apply { removeActivity(this) this.finish() + return this } + } + return null } fun lastActivity(): Activity? { diff --git a/android/app/src/main/java/com/trust/ywx/BuzActivity.kt b/android/app/src/main/java/com/trust/ywx/BuzActivity.kt index b119a57..b1ad5d9 100644 --- a/android/app/src/main/java/com/trust/ywx/BuzActivity.kt +++ b/android/app/src/main/java/com/trust/ywx/BuzActivity.kt @@ -34,12 +34,10 @@ class BuzActivity : ReactActivity() { AppManager.addActivity(this) Toast.makeText(this, "BuzActivity:" + NavigationHelper.routerName, Toast.LENGTH_SHORT) .show() -// if (reactHost.lifecycleState != LifecycleState.RESUMED) { -// reactHost.onHostResume(this) -// } -// Handler(Looper.getMainLooper()).post { -// reactHost.reload("Requested by CodeUpdater") -// } + } + + override fun onResume() { + super.onResume() } override fun onDestroy() { diff --git a/android/app/src/main/java/com/trust/ywx/MainActivity.kt b/android/app/src/main/java/com/trust/ywx/MainActivity.kt index 03d84ce..7331676 100644 --- a/android/app/src/main/java/com/trust/ywx/MainActivity.kt +++ b/android/app/src/main/java/com/trust/ywx/MainActivity.kt @@ -1,15 +1,18 @@ package com.trust.ywx -import android.content.Intent import android.os.Bundle -import androidx.appcompat.app.AppCompatActivity -import com.trust.ywx.specs.navigation.NavigationHelper +import com.facebook.react.ReactActivity +import com.facebook.react.ReactActivityDelegate +import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.fabricEnabled +import com.facebook.react.defaults.DefaultReactActivityDelegate + +class MainActivity : ReactActivity() { + override fun getMainComponentName(): String = "app" + override fun createReactActivityDelegate(): ReactActivityDelegate = + DefaultReactActivityDelegate(this, mainComponentName, fabricEnabled) -class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - NavigationHelper.routerName = "app" - startActivity(Intent(this, BuzActivity::class.java)) - finish() + AppManager.addActivity(this) } } diff --git a/android/app/src/main/java/com/trust/ywx/MainApplication.kt b/android/app/src/main/java/com/trust/ywx/MainApplication.kt index f35b2ad..2b3f0cc 100644 --- a/android/app/src/main/java/com/trust/ywx/MainApplication.kt +++ b/android/app/src/main/java/com/trust/ywx/MainApplication.kt @@ -15,38 +15,30 @@ import java.io.File class MainApplication : Application(), ReactApplication { - override val reactNativeHost: ReactNativeHost = - object : DefaultReactNativeHost(this) { - override fun getPackages(): List = - PackageList(this).packages.apply { - // Packages that cannot be autolinked yet can be added manually here, for example: - add(NavigationPackage()) - } - - override fun getJSMainModuleName(): String = - if (getUseDeveloperSupport()) "index" else "commom" - - override fun getBundleAssetName(): String? = - if (getUseDeveloperSupport()) "index.android.bundle" else null - - // -// override fun getJSBundleFile(): String? = if (getUseDeveloperSupport()) { -// super.getJSBundleFile() -// } else { -// FileHelper.getFilePath("common.android.bundle", this@MainApplication, "bundles") -// } - override fun getJSBundleFile(): String? = if (getUseDeveloperSupport()) { - null - } else { - FileHelper.getFilePath("common.android.bundle", this@MainApplication, "bundles") - } - - override fun getUseDeveloperSupport(): Boolean = BuildConfig.DEBUG - - override val isNewArchEnabled: Boolean = true - override val isHermesEnabled: Boolean = true + override val reactNativeHost: ReactNativeHost = object : DefaultReactNativeHost(this) { + override fun getPackages(): List = PackageList(this).packages.apply { + // Packages that cannot be autolinked yet can be added manually here, for example: + add(NavigationPackage()) } + override fun getJSMainModuleName(): String = + if (getUseDeveloperSupport()) "index" else "commom" + + override fun getBundleAssetName(): String? = + if (getUseDeveloperSupport()) "index.android.bundle" else null + + override fun getJSBundleFile(): String? = if (getUseDeveloperSupport()) { + null + } else { + FileHelper.getFilePath("common.android.bundle", this@MainApplication, "bundles") + } + + override fun getUseDeveloperSupport(): Boolean = BuildConfig.DEBUG + + override val isNewArchEnabled: Boolean = true + override val isHermesEnabled: Boolean = true + } + override val reactHost: ReactHost get() = getDefaultReactHost(applicationContext, reactNativeHost) diff --git a/android/app/src/main/java/com/trust/ywx/multiple/MultipleReactActivityDelegate.kt b/android/app/src/main/java/com/trust/ywx/multiple/MultipleReactActivityDelegate.kt index 2f14e2f..208e648 100644 --- a/android/app/src/main/java/com/trust/ywx/multiple/MultipleReactActivityDelegate.kt +++ b/android/app/src/main/java/com/trust/ywx/multiple/MultipleReactActivityDelegate.kt @@ -38,6 +38,7 @@ class MultipleReactActivityDelegate( } if (enableBridgelessArchitecture()) { + this.mReactDelegate = ReactDelegate( this.plainActivity, @@ -59,6 +60,7 @@ class MultipleReactActivityDelegate( ) this.loadApp(mainComponentName) + } else { this.mReactDelegate = object : ReactDelegate( @@ -86,9 +88,14 @@ class MultipleReactActivityDelegate( val instance = reactNativeHost.reactInstanceManager.currentReactContext?.catalystInstance - instance?.loadScriptFromAssets( - context.assets, - "assets://index.android.bundle", + val fileName = FileHelper.getFilePath( + "$mainComponentName.android.bundle", + reactActivity.applicationContext, + "bundles" + ) + instance?.loadScriptFromFile( + fileName, + fileName, false ) Log.i("TestApp", "loaded biz bundle") @@ -185,4 +192,5 @@ class MultipleReactActivityDelegate( * context will no longer be valid. */ override fun getCurrentReactContext(): ReactContext = mReactDelegate!!.currentReactContext!! + } diff --git a/android/app/src/main/java/com/trust/ywx/specs/navigation/NavigationManager.kt b/android/app/src/main/java/com/trust/ywx/specs/navigation/NavigationManager.kt index c030487..8039725 100644 --- a/android/app/src/main/java/com/trust/ywx/specs/navigation/NavigationManager.kt +++ b/android/app/src/main/java/com/trust/ywx/specs/navigation/NavigationManager.kt @@ -1,6 +1,7 @@ package com.trust.ywx.specs.navigation import android.content.Intent +import android.widget.Toast import com.facebook.react.bridge.ReactApplicationContext import com.trust.ywx.AppManager import com.trust.ywx.BuzActivity @@ -12,15 +13,14 @@ class NavigationManager(reactContext: ReactApplicationContext) : NavigationHelper.routerName = name AppManager.lastActivity() ?.apply { + Toast.makeText(this, "Navigate to $name", Toast.LENGTH_SHORT).show() startActivity(Intent(this, BuzActivity::class.java)) overridePendingTransition(0, 0) } -// AppManager.lastActivity() -// ?.overridePendingTransition(0, 0) } override fun pop() { - AppManager.finishActivity(null) + AppManager.finishActivity(null)?.overridePendingTransition(0, 0) } override fun getName() = NAME diff --git a/android/app/src/main/java/com/trust/ywx/utils/FileHelper.kt b/android/app/src/main/java/com/trust/ywx/utils/FileHelper.kt index 8b36133..400aac2 100644 --- a/android/app/src/main/java/com/trust/ywx/utils/FileHelper.kt +++ b/android/app/src/main/java/com/trust/ywx/utils/FileHelper.kt @@ -18,8 +18,8 @@ class FileHelper { } fun getFilePath(name: String, context: Context?, type: String?): String { - val path = getDirPath(context, type) + File.separator + name - return path + val path = getDirPath(context, null) + return if (type.isNullOrBlank()) path + File.separator + name else path + File.separator + type + File.separator + name } fun copyAssetFileToInternalStorage( diff --git a/android/app/src/main/res/layout/activity_main.xml b/android/app/src/main/res/layout/activity_main.xml index 1eff694..61c821c 100644 --- a/android/app/src/main/res/layout/activity_main.xml +++ b/android/app/src/main/res/layout/activity_main.xml @@ -6,7 +6,13 @@