From dd89ea42df555c1a77b48ce19b71846dc03ece40 Mon Sep 17 00:00:00 2001 From: renwj Date: Fri, 25 Mar 2022 11:10:09 +0800 Subject: [PATCH] =?UTF-8?q?[feedback]=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [feedback]优化代码逻辑 [code]升级版本 --- .../badcase/BadCaseManager.kt | 39 +++++++++++-------- .../ext/BadCaseExt.kt | 4 +- .../feedback/FeedbackManager.kt | 1 + 3 files changed, 26 insertions(+), 18 deletions(-) diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/BadCaseManager.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/BadCaseManager.kt index b62708c6ac..930224fd9d 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/BadCaseManager.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/BadCaseManager.kt @@ -7,6 +7,7 @@ import android.view.ViewGroup import android.view.WindowManager import androidx.fragment.app.FragmentActivity import androidx.lifecycle.Lifecycle.Event +import androidx.lifecycle.Lifecycle.Event.ON_CREATE import androidx.lifecycle.Lifecycle.Event.ON_DESTROY import androidx.lifecycle.LifecycleCoroutineScope import androidx.lifecycle.LifecycleEventObserver @@ -95,19 +96,6 @@ internal object BadCaseManager : LifecycleEventObserver { @OptIn(ExperimentalCoroutinesApi::class) private fun register() { scope?.launch(Dispatchers.Default) { - Reminder.registerGlobalStateChangeListener(object : IGlobalStateChangeListener { - override fun onShow(reminder: IReminder) { - if (reminder.key().startsWith("FeedBackFloatWindow_")) { - feedbackFloatShow = true - } - } - - override fun onHide(reminder: IReminder) { - if (reminder.key().startsWith("FeedBackFloatWindow_")) { - feedbackFloatShow = false - } - } - }) while (true) { CallerLogger.d("$M_DEVA$TAG", "---- 开始监听BadCase事件 ----") val old = record @@ -204,10 +192,10 @@ internal object BadCaseManager : LifecycleEventObserver { } private fun CoroutineScope.showBadCaseInternal(record: AutoPilotRecord) = launch { - viewHolder?.get()?.also { + viewHolder?.get()?.also { itx -> presenter.updateLastModified(record.toLongTime()) showEntry() - it.onClick { + itx.onClick { showBadCaseFloat( onDismiss = { hideFloat?.invoke() @@ -274,14 +262,33 @@ internal object BadCaseManager : LifecycleEventObserver { val activity = viewHolder?.get()?.context as? FragmentActivity ?: throw IllegalStateException("please ensure context is FragmentActivity.") BadCaseView(activity).also { itx -> itx.register(record, onDismiss, onSelect) - activity.pop(itx, 960.PX, WindowManager.LayoutParams.MATCH_PARENT).also { + activity.pop(itx, 960.PX, WindowManager.LayoutParams.MATCH_PARENT, key = "BadCaseFloatWindow_").also { hideFloat = it } } } + + private val listener = object : IGlobalStateChangeListener { + override fun onShow(reminder: IReminder) { + if (reminder.key().startsWith("FeedBackFloatWindow_")) { + feedbackFloatShow = true + } + } + + override fun onHide(reminder: IReminder) { + if (reminder.key().startsWith("FeedBackFloatWindow_")) { + feedbackFloatShow = false + } + } + } + override fun onStateChanged(source: LifecycleOwner, event: Event) { + if (event == ON_CREATE) { + Reminder.registerGlobalStateChangeListener(listener) + } if (event == ON_DESTROY) { + Reminder.unRegisterGlobalStateChangeListener(listener) dismissJob?.takeIf { it.isActive }?.cancel() onHide = null onShow = null diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/ext/BadCaseExt.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/ext/BadCaseExt.kt index 113108fb86..cf25d9c3af 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/ext/BadCaseExt.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/ext/BadCaseExt.kt @@ -66,7 +66,7 @@ internal fun Context.toast(text: CharSequence, duration: Long = 2, unit: TimeUni } @SuppressLint("ClickableViewAccessibility") -internal fun Context.pop(content: View, width: Int, height: Int, fitSystemWindow: Boolean = true, onOuterViewClicked:((focus: View) -> Unit)? = null): () -> Unit { +internal fun Context.pop(content: View, width: Int, height: Int, key: String, fitSystemWindow: Boolean = true, onOuterViewClicked:((focus: View) -> Unit)? = null): () -> Unit { val activity = (this as? FragmentActivity) ?: throw IllegalStateException("please use Activity to trigger pop show.") var tempReminder: PopupWindowReminder? = null activity.lifecycleScope.launchWhenResumed { @@ -120,7 +120,7 @@ internal fun Context.pop(content: View, width: Int, height: Int, fitSystemWindow val reminder = object : PopupWindowReminder(pop) { override fun key(): String { - return "FeedBackFloatWindow_" + super.key() + return key + super.key() } override fun show() { diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/feedback/FeedbackManager.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/feedback/FeedbackManager.kt index f781740f7e..8184e369f3 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/feedback/FeedbackManager.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/feedback/FeedbackManager.kt @@ -154,6 +154,7 @@ internal object FeedbackManager { }, width = 960.PX, height = WindowManager.LayoutParams.MATCH_PARENT, + key = "FeedBackFloatWindow_", onOuterViewClicked = { KeyboardUtils.hideSoftInput(it) }