diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt index 07727e48f6..8e9ff21002 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt @@ -39,6 +39,9 @@ import com.tencent.matrix.trace.config.SharePluginInfo import com.tencent.matrix.trace.config.TraceConfig import com.zhjt.mogo_core_function_devatools.apm.* import com.mogo.eagle.core.function.api.upgrade.* +import com.mogo.eagle.core.utilcode.kotlin.lifeCycleScope +import com.mogo.eagle.core.utilcode.util.AppStateManager +import com.mogo.eagle.core.utilcode.util.IAppStateListener import com.mogo.weak.network.SdtManager import com.zhjt.mogo_core_function_devatools.adas.PowerOffManager import com.zhjt.mogo_core_function_devatools.badcase.BadCaseManager @@ -70,11 +73,13 @@ import com.zhjt.mogo_core_function_devatools.upgrade.UpgradeManager.Companion.up import com.zhjt.mogo_core_function_devatools.weaknetwork.DetectResultImpl import com.zhjt.mogo_core_function_devatools.weaknetwork.WeakNetworkStrategy import com.zhjt.service.chain.ChainLog +import kotlinx.coroutines.delay +import kotlinx.coroutines.launch import java.lang.ref.WeakReference import java.util.concurrent.ConcurrentHashMap @Route(path = MogoServicePaths.PATH_DEVA_TOOLS) -class DevaToolsProvider : IDevaToolsProvider { +class DevaToolsProvider : IDevaToolsProvider, IAppStateListener { companion object { const val TAG = "DevaToolsProvider" @@ -169,7 +174,23 @@ class DevaToolsProvider : IDevaToolsProvider { block.init(it) block.start() } - StatusManager.addListener(TAG, statusListener) + AppStateManager.registerAppStateListener(this) + } + + override fun onAppStateChanged(isForeground: Boolean) { + if (isForeground && !StatusManager.hasInit()) { + mContext?.lifeCycleScope?.launch { + while (!StatusManager.hasInit()) { + val activity = AppStateManager.currentActivity() + if (activity == null) { + delay(500) + continue + } + StatusManager.init(activity) + StatusManager.addListener(TAG, statusListener) + } + } + } } override fun checkMonitorDb() { diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/status/StatusManager.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/status/StatusManager.kt index 0694096680..0bf856b1f9 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/status/StatusManager.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/status/StatusManager.kt @@ -185,6 +185,9 @@ object StatusManager { } fun getExceptionStatusBeforeLaunchAutopilot(): Int { + if (!hasInit) { + return 0 + } var ret = 0 model.status.value?.second?.filter { it is IAutopilotPreLaunchStatus @@ -234,6 +237,10 @@ object StatusManager { return ret } + fun hasInit(): Boolean { + return hasInit + } + interface IStatusListener { fun onStatusChanged(data: List, hasException: Boolean) }