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 ) );