diff --git a/gradle.properties b/gradle.properties index e68785a0cb..c511005017 100644 --- a/gradle.properties +++ b/gradle.properties @@ -48,7 +48,7 @@ MOGO_MODULE_BACK_VERSION=1.0.2-SNAPSHOT ## 工程外部模块 # 探路 -MOGO_MODULE_TANLU_VERSION=1.0.1-SNAPSHOT +MOGO_MODULE_TANLU_VERSION=1.0.2-SNAPSHOT # 车聊聊 CARCHATTING_VERSION=1.0.2-SNAPSHOT # 车聊聊接口 @@ -64,7 +64,7 @@ MOGO_MODULE_PUSH_VERSION=1.0.0-SNAPSHOT # 广告资源位 MOGO_MODULE_AD_CARD_VERSION=1.0.0-SNAPSHOT # 新鲜水 -MOGO_MODULE_FRESH_NEWS_VERSION=1.0.0-SNAPSHOT +MOGO_MODULE_FRESH_NEWS_VERSION=1.0.2-SNAPSHOT # 卡片效果 CARD_LIBRARY_VERSION=1.0.0-SNAPSHOT \ No newline at end of file diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java index 1527b7b6df..d3fff9286e 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java @@ -157,7 +157,7 @@ public class MogoServices implements IMogoMapListener, return; } mRefreshRemainingTime -= ServiceConst.DECREASE_INTERVAL; - if ( mRefreshRemainingTime == 0 ) { + if ( mRefreshRemainingTime <= 0 ) { Logger.d( TAG, "move to center and refresh data." ); invokeAutoRefresh(); } else { @@ -503,7 +503,6 @@ public class MogoServices implements IMogoMapListener, if ( factor == 0.0f ) { return false; } - Logger.d( TAG, "invokeRefreshWhenTranslationByUser,mLastCustomRefreshCenterLocation = %s, latLng = %s", mLastCustomRefreshCenterLocation, latLng ); float distance = Utils.calculateLineDistance( latLng, mLastCustomRefreshCenterLocation ); Trace.endSection(); return distance > factor; @@ -592,8 +591,7 @@ public class MogoServices implements IMogoMapListener, switch ( descriptor ) { case USER_INTERACTED: if ( isTrue ) { - mRefreshRemainingTime = ServiceConst.DEFAULT_AUTO_REFRESH_WHEN_INTERRUPT; - Logger.i( TAG, "用户状态改变,下次刷新时间:%ss后", mRefreshRemainingTime ); + restartAutoRefreshAtTime( ServiceConst.DEFAULT_AUTO_REFRESH_WHEN_INTERRUPT ); } break; case SEARCH_UI: @@ -636,6 +634,21 @@ public class MogoServices implements IMogoMapListener, } } + public void restartAutoRefreshAtTime( int time ) { + if ( time < 0 ) { + Logger.w( TAG, "ignore refresh request case time < 0" ); + return; + } + stopAutoRefreshStrategy(); + mRefreshRemainingTime = time; + long delay = ServiceConst.DECREASE_INTERVAL; + if( mRefreshRemainingTime < ServiceConst.DECREASE_INTERVAL ){ + delay = mRefreshRemainingTime; + } + mHandler.sendEmptyMessageDelayed( ServiceConst.MSG_TYPE_REFRESH_DECREASE, delay ); + Logger.i( TAG, "下次刷新时间:%ss后", mRefreshRemainingTime ); + } + public void refreshStrategy() { Logger.d( TAG, "move to center and refresh data." ); mStatusManager.setUserInteractionStatus( ServiceConst.TYPE, true, false ); diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/strategy/MogoRefreshStrategyController.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/strategy/MogoRefreshStrategyController.java new file mode 100644 index 0000000000..51aaf27073 --- /dev/null +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/strategy/MogoRefreshStrategyController.java @@ -0,0 +1,28 @@ +package com.mogo.module.service.strategy; + +import android.content.Context; + +import com.alibaba.android.arouter.facade.annotation.Route; +import com.mogo.module.service.MogoServices; +import com.mogo.service.MogoServicePaths; +import com.mogo.service.strategy.IMogoRefreshStrategyController; + +/** + * @author congtaowang + * @since 2020-03-13 + *
+ * 描述 + */ +@Route( path = MogoServicePaths.PATH_REFRESH_STRATEGY_API ) +public class MogoRefreshStrategyController implements IMogoRefreshStrategyController { + + @Override + public void restartAutoRefreshAtTime( int delay ) { + MogoServices.getInstance().restartAutoRefreshAtTime( delay ); + } + + @Override + public void init( Context context ) { + + } +} diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/IMogoServiceApis.java b/services/mogo-service-api/src/main/java/com/mogo/service/IMogoServiceApis.java index 03963acd6e..49bdc2a625 100644 --- a/services/mogo-service-api/src/main/java/com/mogo/service/IMogoServiceApis.java +++ b/services/mogo-service-api/src/main/java/com/mogo/service/IMogoServiceApis.java @@ -19,6 +19,7 @@ import com.mogo.service.module.IMogoSettingManager; import com.mogo.service.network.IMogoNetwork; import com.mogo.service.statusmanager.IMogoMsgCenter; import com.mogo.service.statusmanager.IMogoStatusManager; +import com.mogo.service.strategy.IMogoRefreshStrategyController; import com.mogo.service.windowview.IMogoWindowManager; /** @@ -146,4 +147,11 @@ public interface IMogoServiceApis extends IProvider { * @return */ IMogoActionManager getActionManagerApi(); + + /** + * 获取刷新策略控制接口 + * + * @return + */ + IMogoRefreshStrategyController getRefreshStrategyControllerApi(); } diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/MogoServicePaths.java b/services/mogo-service-api/src/main/java/com/mogo/service/MogoServicePaths.java index 239f026a65..d27abc5ce7 100644 --- a/services/mogo-service-api/src/main/java/com/mogo/service/MogoServicePaths.java +++ b/services/mogo-service-api/src/main/java/com/mogo/service/MogoServicePaths.java @@ -148,4 +148,10 @@ public class MogoServicePaths { */ @Deprecated public static final String PATH_ACTION_APIS = "/mogoaction/api"; + + /** + * 刷新策略控制 + */ + @Deprecated + public static final String PATH_REFRESH_STRATEGY_API = "refreshstrategy/api"; } diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/strategy/IMogoRefreshStrategyController.java b/services/mogo-service-api/src/main/java/com/mogo/service/strategy/IMogoRefreshStrategyController.java new file mode 100644 index 0000000000..72356ea315 --- /dev/null +++ b/services/mogo-service-api/src/main/java/com/mogo/service/strategy/IMogoRefreshStrategyController.java @@ -0,0 +1,20 @@ +package com.mogo.service.strategy; + +import com.alibaba.android.arouter.facade.template.IProvider; + +/** + * @author congtaowang + * @since 2020-03-13 + *
+ * 刷新策略控制 + */ +public interface IMogoRefreshStrategyController extends IProvider { + + /** + * 中断当前刷新,在 delay ms 后再次刷新 + * + * @param delay 单位(ms) 0 为则立即刷新,为负值则忽略 + */ + void restartAutoRefreshAtTime( int delay ); + +} \ No newline at end of file diff --git a/services/mogo-service/src/main/java/com/mogo/service/impl/MogoServiceApis.java b/services/mogo-service/src/main/java/com/mogo/service/impl/MogoServiceApis.java index e9f4b6942b..62f0fd3466 100644 --- a/services/mogo-service/src/main/java/com/mogo/service/impl/MogoServiceApis.java +++ b/services/mogo-service/src/main/java/com/mogo/service/impl/MogoServiceApis.java @@ -28,6 +28,7 @@ import com.mogo.service.module.IMogoSettingManager; import com.mogo.service.network.IMogoNetwork; import com.mogo.service.statusmanager.IMogoMsgCenter; import com.mogo.service.statusmanager.IMogoStatusManager; +import com.mogo.service.strategy.IMogoRefreshStrategyController; import com.mogo.service.windowview.IMogoWindowManager; import com.mogo.utils.logger.Logger; @@ -135,6 +136,11 @@ public class MogoServiceApis implements IMogoServiceApis { return getApiInstance( IMogoActionManager.class, MogoServicePaths.PATH_ACTION_APIS ); } + @Override + public IMogoRefreshStrategyController getRefreshStrategyControllerApi() { + return getApiInstance( IMogoRefreshStrategyController.class, MogoServicePaths.PATH_REFRESH_STRATEGY_API ); + } + private static < T extends IProvider > T getApiInstance( Class< T > clazz, String path ) { T inst = SingletonsHolder.get( clazz ); if ( inst == null ) {