refactor(app): 重构 AppManager 并优化应用初始化逻辑
- 将 AppManager 从根包移动到 utils 包 -移除了 NavigationManager 中的 Toast弹窗 - 更新了 BuzActivity、MainActivity、MainApplication 和 WelcomeActivity 中的 AppManager 引用 - 在 WelcomeActivity 中增加了初始化失败的错误处理逻辑
这个提交包含在:
父节点
ff2252715c
当前提交
477025c1b1
@ -8,6 +8,7 @@ import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.fabricEnable
|
|||||||
import com.facebook.react.defaults.DefaultReactActivityDelegate
|
import com.facebook.react.defaults.DefaultReactActivityDelegate
|
||||||
import com.trust.ywx.multiple.MultipleReactActivityDelegate
|
import com.trust.ywx.multiple.MultipleReactActivityDelegate
|
||||||
import com.trust.ywx.specs.navigation.NavigationHelper
|
import com.trust.ywx.specs.navigation.NavigationHelper
|
||||||
|
import com.trust.ywx.utils.AppManager
|
||||||
|
|
||||||
class BuzActivity : ReactActivity() {
|
class BuzActivity : ReactActivity() {
|
||||||
|
|
||||||
|
|||||||
@ -5,6 +5,7 @@ import com.facebook.react.ReactActivity
|
|||||||
import com.facebook.react.ReactActivityDelegate
|
import com.facebook.react.ReactActivityDelegate
|
||||||
import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.fabricEnabled
|
import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.fabricEnabled
|
||||||
import com.facebook.react.defaults.DefaultReactActivityDelegate
|
import com.facebook.react.defaults.DefaultReactActivityDelegate
|
||||||
|
import com.trust.ywx.utils.AppManager
|
||||||
|
|
||||||
class MainActivity : ReactActivity() {
|
class MainActivity : ReactActivity() {
|
||||||
override fun getMainComponentName(): String = "app"
|
override fun getMainComponentName(): String = "app"
|
||||||
|
|||||||
@ -54,6 +54,9 @@ class MainApplication : Application(), ReactApplication {
|
|||||||
super.onCreate()
|
super.onCreate()
|
||||||
if (!BuildConfig.DEBUG)
|
if (!BuildConfig.DEBUG)
|
||||||
createOrUpdateBundle()
|
createOrUpdateBundle()
|
||||||
|
else {
|
||||||
|
isInit = true
|
||||||
|
}
|
||||||
loadReactNative(this)
|
loadReactNative(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -72,7 +75,7 @@ class MainApplication : Application(), ReactApplication {
|
|||||||
// bundle.zip在本地的路径
|
// bundle.zip在本地的路径
|
||||||
val bf = File(FileHelper.getFilePath("bundle.zip", this, "bundles"))
|
val bf = File(FileHelper.getFilePath("bundle.zip", this, "bundles"))
|
||||||
// 果断点,直接删除重建
|
// 果断点,直接删除重建
|
||||||
if (f.exists() && !f.isDirectory) {
|
if (f.exists() && f.isDirectory) {
|
||||||
f.delete()
|
f.delete()
|
||||||
}
|
}
|
||||||
f.mkdirs()
|
f.mkdirs()
|
||||||
|
|||||||
@ -4,8 +4,11 @@ import android.content.Intent
|
|||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.os.Handler
|
import android.os.Handler
|
||||||
import android.os.Looper
|
import android.os.Looper
|
||||||
|
import android.os.Process
|
||||||
|
import android.widget.Toast
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
import com.trust.ywx.event.BundleUpdateEvent
|
import com.trust.ywx.event.BundleUpdateEvent
|
||||||
|
import com.trust.ywx.utils.AppManager
|
||||||
import org.greenrobot.eventbus.EventBus
|
import org.greenrobot.eventbus.EventBus
|
||||||
import org.greenrobot.eventbus.Subscribe
|
import org.greenrobot.eventbus.Subscribe
|
||||||
import org.greenrobot.eventbus.ThreadMode
|
import org.greenrobot.eventbus.ThreadMode
|
||||||
@ -15,21 +18,29 @@ class WelcomeActivity : AppCompatActivity() {
|
|||||||
val handler = Handler(Looper.getMainLooper())
|
val handler = Handler(Looper.getMainLooper())
|
||||||
val runnable = Runnable {
|
val runnable = Runnable {
|
||||||
if (MainApplication.isInit) {
|
if (MainApplication.isInit) {
|
||||||
|
handler.removeCallbacks(runnableError)
|
||||||
startActivity(Intent(this@WelcomeActivity, MainActivity::class.java))
|
startActivity(Intent(this@WelcomeActivity, MainActivity::class.java))
|
||||||
finish()
|
finish()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
val runnableError = Runnable {
|
||||||
|
Toast.makeText(this, "初始化失败", Toast.LENGTH_SHORT).show()
|
||||||
|
Process.killProcess(Process.myPid())
|
||||||
|
}
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
setContentView(R.layout.activity_main)
|
setContentView(R.layout.activity_main)
|
||||||
AppManager.addActivity(this)
|
AppManager.addActivity(this)
|
||||||
handler.postDelayed(runnable, 3000)
|
handler.postDelayed(runnable, 3000)
|
||||||
|
// 8秒没有完成初始化则显示初始化失败
|
||||||
|
handler.postDelayed(runnableError, 8000)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||||
fun onMessageEvent(event: BundleUpdateEvent) {
|
fun onMessageEvent(event: BundleUpdateEvent) {
|
||||||
handler.removeCallbacks(runnable)
|
handler.removeCallbacks(runnable)
|
||||||
|
handler.removeCallbacks(runnableError)
|
||||||
startActivity(Intent(this@WelcomeActivity, MainActivity::class.java))
|
startActivity(Intent(this@WelcomeActivity, MainActivity::class.java))
|
||||||
finish()
|
finish()
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,7 +3,7 @@ package com.trust.ywx.specs.navigation
|
|||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.widget.Toast
|
import android.widget.Toast
|
||||||
import com.facebook.react.bridge.ReactApplicationContext
|
import com.facebook.react.bridge.ReactApplicationContext
|
||||||
import com.trust.ywx.AppManager
|
import com.trust.ywx.utils.AppManager
|
||||||
import com.trust.ywx.BuzActivity
|
import com.trust.ywx.BuzActivity
|
||||||
import com.trust.ywx.specs.NativeNavigationManagerSpec
|
import com.trust.ywx.specs.NativeNavigationManagerSpec
|
||||||
|
|
||||||
@ -13,7 +13,6 @@ class NavigationManager(reactContext: ReactApplicationContext) :
|
|||||||
NavigationHelper.routerName = name
|
NavigationHelper.routerName = name
|
||||||
AppManager.lastActivity()
|
AppManager.lastActivity()
|
||||||
?.apply {
|
?.apply {
|
||||||
Toast.makeText(this, "Navigate to $name", Toast.LENGTH_SHORT).show()
|
|
||||||
startActivity(Intent(this, BuzActivity::class.java))
|
startActivity(Intent(this, BuzActivity::class.java))
|
||||||
overridePendingTransition(0, 0)
|
overridePendingTransition(0, 0)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
package com.trust.ywx
|
package com.trust.ywx.utils
|
||||||
|
|
||||||
import android.app.Activity
|
import android.app.Activity
|
||||||
import java.util.Stack
|
import java.util.Stack
|
||||||
@ -2,7 +2,7 @@ package com.trust.ywx.utils
|
|||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
import com.trust.ywx.AppManager
|
import com.trust.ywx.utils.AppManager
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.io.FileInputStream
|
import java.io.FileInputStream
|
||||||
import java.io.FileOutputStream
|
import java.io.FileOutputStream
|
||||||
|
|||||||
正在加载...
在新工单中引用
屏蔽一个用户