From 497d906443b51efb34c64bb9adba3d506952e2b7 Mon Sep 17 00:00:00 2001 From: renwj Date: Thu, 28 Jul 2022 15:36:36 +0800 Subject: [PATCH] =?UTF-8?q?[=E7=8A=B6=E6=80=81=E6=A0=8F]=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=B1=95=E7=A4=BA=E5=92=8C=E9=9A=90=E8=97=8F=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DevaToolsProvider.kt | 5 +++ .../status/StatusManager.kt | 40 +++++++++++++------ .../api/devatools/IDevaToolsProvider.kt | 5 +++ 3 files changed, 37 insertions(+), 13 deletions(-) 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 12e2e97303..387f7212b8 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 @@ -105,5 +105,10 @@ class DevaToolsProvider : IDevaToolsProvider { override fun showStatusBar(ctx: Context) { StatusManager.init(ctx) + StatusManager.show() + } + + override fun hideStatusBar() { + StatusManager.hide() } } \ No newline at end of file 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 819344deb6..649715fb79 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 @@ -2,6 +2,7 @@ package com.zhjt.mogo_core_function_devatools.status import android.content.* import android.view.* +import android.view.WindowManager.LayoutParams import androidx.core.view.* import androidx.lifecycle.* import androidx.lifecycle.Lifecycle.Event @@ -32,6 +33,7 @@ import com.zhjt.mogo_core_function_devatools.status.ui.* import kotlinx.coroutines.* import kotlinx.coroutines.flow.* import mogo_msg.MogoReportMsg +import java.lang.ref.* object StatusManager { @@ -43,6 +45,10 @@ object StatusManager { private var timer: Job? = null + private var context: WeakReference? = null + + private var hasInit = false + private val listener = object : IMoGoAutopilotStatusListener { override fun onAutopilotGuardian(guardianInfo: MogoReportMsg.MogoReportMessage?) { super.onAutopilotGuardian(guardianInfo) @@ -83,6 +89,10 @@ object StatusManager { } fun init(ctx: Context) { + if (hasInit) { + return + } + hasInit = true val owner = ctx as? ViewModelStoreOwner ?: throw IllegalStateException("ctx: $ctx is a instance of ViewModelStoreOwner.") model = ViewModelProvider(owner).get(StatusModel::class.java) ctx.lifeCycleOwner.lifecycle.addObserver(object : LifecycleEventObserver { @@ -95,6 +105,7 @@ object StatusManager { } } }) + context = WeakReference(ctx) } private fun onCreate(ctx: Context) { @@ -119,24 +130,27 @@ object StatusManager { } } } - hidePop?.invoke() - val content = StatusView(model, ctx) - content.doOnAttach { - for (f in flows) { - f.onCreate() - } - } - ctx.normalPop(content, - width = 665.PX, - height = WindowManager.LayoutParams.WRAP_CONTENT, - gravity = Gravity.END, - startX = 55.PX, - isFocusable = false).also { hidePop = it } } + fun show() { + context?.get()?.also { ctx -> + hidePop?.invoke() + val content = StatusView(model, ctx) + content.doOnAttach { + for (f in flows) { + f.onCreate() + } + } + ctx.normalPop(content, width = 665.PX, height = LayoutParams.WRAP_CONTENT, gravity = Gravity.END, startX = 55.PX, isFocusable = false).also { hidePop = it } + } + } + fun hide() { + hidePop?.invoke() + } private fun onDestroy(ctx: Context) { + hasInit = false CallerAutoPilotStatusListenerManager.removeListener(TAG) AppStateManager.unRegisterAppStateListener(appStateListener) timer?.cancel() diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/devatools/IDevaToolsProvider.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/devatools/IDevaToolsProvider.kt index b0ad55d157..df8eb59c45 100644 --- a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/devatools/IDevaToolsProvider.kt +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/devatools/IDevaToolsProvider.kt @@ -108,4 +108,9 @@ interface IDevaToolsProvider : IProvider { * 展示状态栏 */ fun showStatusBar(ctx: Context) + + /** + * 隐藏状态栏 + */ + fun hideStatusBar() } \ No newline at end of file