This commit is contained in:
wangcongtao
2020-02-12 12:07:11 +08:00
parent 4eeea9e5d1
commit 9f7921e50f
10 changed files with 321 additions and 164 deletions

View File

@@ -6,6 +6,7 @@ import com.alibaba.android.arouter.facade.annotation.Route;
import com.mogo.service.MogoServicePaths;
import com.mogo.service.datamanager.IMogoDataChangedListener;
import com.mogo.service.datamanager.IMogoDataManager;
import com.mogo.utils.logger.Logger;
import java.util.ArrayList;
import java.util.HashMap;
@@ -21,6 +22,8 @@ import java.util.Map;
*/
public class MogoDataHandler {
private static final String TAG = "MogoDataHandler";
private Map< String, List< IMogoDataChangedListener > > mListeners = new HashMap<>();
private MogoDataHandler() {
@@ -42,6 +45,7 @@ public class MogoDataHandler {
if ( !mListeners.containsKey( tag ) || mListeners.get( tag ) == null ) {
mListeners.put( tag, new ArrayList< IMogoDataChangedListener >() );
}
mListeners.get( tag ).add( listener );
}
public synchronized void unregisterListener( String tag, IMogoDataChangedListener listener ) {
@@ -53,16 +57,20 @@ public class MogoDataHandler {
}
}
public void invoke( String tag, List< Object > datums ) {
if ( tag == null ) {
public void invoke( String tag, Object data ) {
if ( tag == null || mListeners.get( tag ) == null ) {
return;
}
Iterator< IMogoDataChangedListener > iterator = mListeners.get( tag ).iterator();
while ( iterator.hasNext() ) {
IMogoDataChangedListener listener = iterator.next();
if ( listener != null ) {
listener.onDataSetChanged( datums );
try {
Iterator< IMogoDataChangedListener > iterator = mListeners.get( tag ).iterator();
while ( iterator.hasNext() ) {
IMogoDataChangedListener listener = iterator.next();
if ( listener != null ) {
listener.onDataSetChanged( data );
}
}
} catch( Exception e ){
Logger.e(TAG, e, "error.");
}
}
}

View File

@@ -23,6 +23,7 @@ import com.mogo.module.common.entity.MarkerShowEntity;
import com.mogo.module.service.MarkerServiceHandler;
import com.mogo.module.service.ServiceConst;
import com.mogo.module.service.Utils;
import com.mogo.module.service.datamanager.MogoDataHandler;
import com.mogo.service.cardmanager.IMogoCardChangedListener;
import com.mogo.service.connection.IMogoOnMessageListener;
import com.mogo.utils.logger.Logger;
@@ -325,6 +326,8 @@ public class MapMarkerManager implements IMogoMarkerClickListener, IMogoOnMessag
}
}
// 将数据同步给探路,避免探路每次 perform 的时候去拉取,造成消耗
MogoDataHandler.getInstance().invoke( ServiceConst.CARD_TYPE_ROAD_CONDITION, exploreWayList);
if (exploreWayList != null) {
for (MarkerExploreWay markerExploreWay : exploreWayList) {
if (!markerExploreWay.getCanLive()) {