From f9878f0b98100b8b91202215d04f0b95a0a52860 Mon Sep 17 00:00:00 2001 From: wangcongtao Date: Fri, 19 Jun 2020 14:17:14 +0800 Subject: [PATCH] opt --- .../IMogoStickyStatusChangedListener.java | 18 ++++++++++++++++++ .../impl/statusmanager/MogoStatusManager.java | 3 ++- 2 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 services/mogo-service-api/src/main/java/com/mogo/service/statusmanager/IMogoStickyStatusChangedListener.java diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/statusmanager/IMogoStickyStatusChangedListener.java b/services/mogo-service-api/src/main/java/com/mogo/service/statusmanager/IMogoStickyStatusChangedListener.java new file mode 100644 index 0000000000..60a79be75f --- /dev/null +++ b/services/mogo-service-api/src/main/java/com/mogo/service/statusmanager/IMogoStickyStatusChangedListener.java @@ -0,0 +1,18 @@ +package com.mogo.service.statusmanager; + +/** + * @author congtaowang + * @since 2020-01-04 + *

+ * 状态控制器监听 + */ +public interface IMogoStickyStatusChangedListener extends IMogoStatusChangedListener { + + /** + * 是否需要黏性状态: 先改变状态,后注册监听 + * + * @param descriptor 状态 + * @return 默认不需要 + */ + boolean requestStickyStatus( StatusDescriptor descriptor ); +} diff --git a/services/mogo-service/src/main/java/com/mogo/service/impl/statusmanager/MogoStatusManager.java b/services/mogo-service/src/main/java/com/mogo/service/impl/statusmanager/MogoStatusManager.java index b7e0eed831..a16ca51607 100644 --- a/services/mogo-service/src/main/java/com/mogo/service/impl/statusmanager/MogoStatusManager.java +++ b/services/mogo-service/src/main/java/com/mogo/service/impl/statusmanager/MogoStatusManager.java @@ -8,6 +8,7 @@ import com.alibaba.android.arouter.facade.annotation.Route; import com.mogo.service.MogoServicePaths; import com.mogo.service.statusmanager.IMogoStatusChangedListener; import com.mogo.service.statusmanager.IMogoStatusManager; +import com.mogo.service.statusmanager.IMogoStickyStatusChangedListener; import com.mogo.service.statusmanager.StatusDescriptor; import com.mogo.utils.logger.Logger; @@ -236,7 +237,7 @@ public class MogoStatusManager implements IMogoStatusManager { } mListeners.get( descriptor ).add( listener ); - if ( listener.requestStickyStatus( descriptor ) ) { + if ( listener instanceof IMogoStickyStatusChangedListener && listener.requestStickyStatus( descriptor ) ) { Boolean val = mStatus.get( descriptor ); if ( val != null ) { listener.onStatusChanged( descriptor, get_bool_val( descriptor ) );