From d3a38a01b235428380f46b22b4408fcf9d50566c Mon Sep 17 00:00:00 2001 From: wangcongtao Date: Fri, 28 Aug 2020 17:54:53 +0800 Subject: [PATCH] rlgl - 2 --- .../launchercard/LauncherCardRefresher.java | 106 +++++++++--------- 1 file changed, 54 insertions(+), 52 deletions(-) diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/launchercard/LauncherCardRefresher.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/launchercard/LauncherCardRefresher.java index 30ee36e339..cca44dd636 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/launchercard/LauncherCardRefresher.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/launchercard/LauncherCardRefresher.java @@ -29,7 +29,6 @@ import com.mogo.utils.storage.SharedPrefsMgr; import java.util.ArrayList; import java.util.Arrays; -import java.util.Comparator; import java.util.List; import java.util.Map; @@ -54,13 +53,15 @@ class LauncherCardRefresher { private static volatile LauncherCardRefresher sInstance; // 刷新道路事件/车友 - public static final int MSG_REFRESH = 2020; + public static final int MSG_EXPLORER_WAY_OR_ONLINE_CAR_DATA = 2020; + // 开始引导策略 + public static final int MSG_INDUCE = 2019; // 刷新卡片默认显示内容 public static final int MSG_REFRESH_DEFAULT_CARD = 2021; // 刷新卡片广告 public static final int MSG_REFRESH_ADVERTISEMENT = 2022; - // 开始刷新广告数据 - public static final int MSG_START_REFRESH_ADVERTISEMENT = 2023; + // 加载网络配置数据 + public static final int MSG_LOAD_NET_CONFIG = 2023; // 默认播报 public static final int MSG_START_LOOP_DEFAULT_CARD = 2024; public static final long ONE_MINUTE = 60 * 1000L; @@ -114,20 +115,24 @@ class LauncherCardRefresher { return; } switch ( msg.what ) { - case MSG_REFRESH: - try { - handleRefreshMsg(); - } catch ( Exception e ) { - Logger.e( TAG, e, "error when refresh launcher card." ); - } + case MSG_LOAD_NET_CONFIG: + loadNetworkConfigStrategy(); break; case MSG_REFRESH_DEFAULT_CARD: renderDefaultLauncherCardConfig(); - // 开启广告 - startLoopRenderAdvertisements(); mRefreshStrategy = mRefreshStrategy.getNext(); restart(); break; + case MSG_INDUCE: + handleInduceStrategy(); + break; + case MSG_EXPLORER_WAY_OR_ONLINE_CAR_DATA: + try { + handleRefreshExplorerWayOrOnlineCarMsg(); + } catch ( Exception e ) { + Logger.e( TAG, e, "error when refresh launcher card." ); + } + break; case MSG_START_LOOP_DEFAULT_CARD: renderDefaultLauncherCardConfig(); break; @@ -135,9 +140,6 @@ class LauncherCardRefresher { int index = msg.arg1;// 当前广告索引 loopRenderAdvertisements( index ); break; - case MSG_START_REFRESH_ADVERTISEMENT: - startAdvertisementsStrategy(); - break; } } }; @@ -154,8 +156,8 @@ class LauncherCardRefresher { new LauncherCardRefreshStrategy( 5 * ONE_MINUTE, null, - MSG_REFRESH ), - MSG_REFRESH ), + MSG_EXPLORER_WAY_OR_ONLINE_CAR_DATA ), + MSG_INDUCE ), MSG_REFRESH_DEFAULT_CARD ); @@ -168,7 +170,6 @@ class LauncherCardRefresher { } Logger.d( TAG, "start" ); mLaunchTTSText = mContext.getString( R.string.module_service_open_app_tip ); - startExplorerWayStrategy(); mDefaultConfigCounter = 0; mRefreshTicketCounter = 0; // 延时加载数据,已保证accOn之后网络恢复正常 @@ -176,13 +177,14 @@ class LauncherCardRefresher { if ( NetworkUtils.isConnected( mContext ) ) { delay = 0L; } - mHandler.sendEmptyMessageDelayed( MSG_START_REFRESH_ADVERTISEMENT, delay ); + mHandler.sendEmptyMessageDelayed( MSG_LOAD_NET_CONFIG, delay ); + startInduceStrategy(); } /** - * 道路事件和车友播报 + * 引导策略:本地策略 & 网络策略 */ - private void startExplorerWayStrategy() { + private void startInduceStrategy() { mHandler.sendEmptyMessageDelayed( mRefreshStrategy.getMsgType(), mRefreshStrategy.getInterval() ); mRefreshStop = false; mStart = true; @@ -191,9 +193,12 @@ class LauncherCardRefresher { public void stop() { mRefreshStop = true; mStart = false; - mHandler.removeMessages( MSG_REFRESH ); + mHandler.removeMessages( MSG_INDUCE ); + mHandler.removeMessages( MSG_EXPLORER_WAY_OR_ONLINE_CAR_DATA ); mHandler.removeMessages( MSG_REFRESH_DEFAULT_CARD ); mHandler.removeMessages( MSG_START_LOOP_DEFAULT_CARD ); + mHandler.removeMessages( MSG_REFRESH_ADVERTISEMENT ); + mHandler.removeMessages( MSG_LOAD_NET_CONFIG ); Logger.d( TAG, "stop" ); } @@ -202,21 +207,40 @@ class LauncherCardRefresher { return; } mRefreshStop = false; - mHandler.removeMessages( MSG_REFRESH ); + mHandler.removeMessages( mRefreshStrategy.getMsgType() ); mHandler.sendEmptyMessageDelayed( mRefreshStrategy.getMsgType(), mRefreshStrategy.getInterval() ); } - private void handleRefreshMsg() { + /** + * 开始诱导策略 + * 第一次如果有活动,则优先播报活动,否则播报道路事件/车友 + * 后面的按各自的时间间隔播报 + */ + private void handleInduceStrategy() { + if ( mAdvertisements != null && !mAdvertisements.isEmpty() ) { + loopRenderAdvertisements( 0 ); + startNextRefreshStrategy(); + } else { + handleRefreshExplorerWayOrOnlineCarMsg(); + } + } + + private void startNextRefreshStrategy(){ + mRefreshStrategy = mRefreshStrategy.getNext(); + restart(); + } + + private void handleRefreshExplorerWayOrOnlineCarMsg() { MogoLocation location = MarkerServiceHandler.getMogoLocationClient().getLastKnowLocation(); if ( location == null ) { restart(); return; } MogoLatLng latLng = new MogoLatLng( location.getLatitude(), location.getLongitude() ); - handleRefreshData( latLng, mRefreshStrategy.getType() ); + handleRefreshExplorerWayOrOnlineCarData( latLng, mRefreshStrategy.getType() ); } - private void handleRefreshData( MogoLatLng latLng, LauncherCardRefreshType type ) { + private void handleRefreshExplorerWayOrOnlineCarData( MogoLatLng latLng, LauncherCardRefreshType type ) { mRefreshModel.refreshDataSync( latLng, mRefreshStrategy.getRadius(), mRefreshStrategy.getLimit(), @@ -224,14 +248,12 @@ class LauncherCardRefresher { @Override public void onSuccess( MarkerResponse response ) { notifyRefreshChanged( type, response ); - mRefreshStrategy = mRefreshStrategy.getNext(); - restart(); + startNextRefreshStrategy(); } @Override public void onFail() { - mRefreshStrategy = mRefreshStrategy.getNext(); - restart(); + startNextRefreshStrategy(); } } ); } @@ -355,7 +377,7 @@ class LauncherCardRefresher { /** * 请求广告数据 */ - private void startAdvertisementsStrategy() { + private void loadNetworkConfigStrategy() { final Map< String, Object > query = new ParamsProvider.Builder( mContext ) .append( "modelType", 30 ) .build(); @@ -400,7 +422,7 @@ class LauncherCardRefresher { public void onTicketGot( String ticket ) { Logger.d( TAG, "ticket=%s", ticket ); if ( mRefreshTicketCounter < 3 ) { - startAdvertisementsStrategy(); + loadNetworkConfigStrategy(); } } @@ -458,26 +480,6 @@ class LauncherCardRefresher { mHandler.sendMessageDelayed( msg, mDefaultTTSPlayInterval ); } - /** - * 开始按策略展示广告 - */ - private void startLoopRenderAdvertisements() { - Message msg = Message.obtain(); - if ( mAdvertisements == null || mAdvertisements.isEmpty() ) { - return; - } else { - try { - LauncherCardAdvertisementData.LauncherCardAdvertisement advertisement = mAdvertisements.get( 0 ); - msg.what = MSG_REFRESH_ADVERTISEMENT; - msg.arg1 = 1; - mHandler.sendMessageDelayed( msg, advertisement.popupNum * ONE_MINUTE ); - } catch ( Exception e ) { - e.printStackTrace(); - } - } - - } - private void loopRenderAdvertisements( int index ) { try { index = index % mAdvertisements.size();