opt
This commit is contained in:
@@ -74,7 +74,9 @@ public class SocketManager implements IMogoSocketManager, OnSocketReceiveCallbac
|
||||
|
||||
|
||||
private SocketConnManager mSocketConnManager;
|
||||
private long mLastMsgId = Long.MAX_VALUE;
|
||||
public static final int MAX_CAP = 64; //保证充足的容量应对非常延时的推送
|
||||
private ArrayList< Long > mReceivedMsgId = new ArrayList<>( MAX_CAP );
|
||||
private int mCurrentIndex = 0;
|
||||
|
||||
@Override
|
||||
public void init( Context context, String appId ) {
|
||||
@@ -93,15 +95,15 @@ public class SocketManager implements IMogoSocketManager, OnSocketReceiveCallbac
|
||||
if ( listeners != null && !listeners.isEmpty() ) {
|
||||
Iterator< IMogoOnMessageListener > iterator = listeners.iterator();
|
||||
if ( msgId != 0 ) { //兼容老版本
|
||||
if ( mLastMsgId == msgId ) { // 避免消息重发
|
||||
if ( mReceivedMsgId.contains( msgId ) ) { // 避免消息重发
|
||||
return;
|
||||
}
|
||||
cacheLastReceivedMsgId( msgId );
|
||||
}
|
||||
mLastMsgId = msgId;
|
||||
while ( iterator.hasNext() ) {
|
||||
IMogoOnMessageListener listener = iterator.next();
|
||||
if ( listener != null ) {
|
||||
Logger.d(TAG, "received msg == %s, msgId = %s", payload.getPayload().toStringUtf8(), msgId);
|
||||
Logger.d( TAG, "received msg == %s, msgId = %s", payload.getPayload().toStringUtf8(), msgId );
|
||||
listener.onMsgReceived( GsonUtil.objectFromJson( payload.getPayload().toStringUtf8(), listener.target() ) );
|
||||
}
|
||||
}
|
||||
@@ -111,6 +113,16 @@ public class SocketManager implements IMogoSocketManager, OnSocketReceiveCallbac
|
||||
}
|
||||
}
|
||||
|
||||
private void cacheLastReceivedMsgId( long msgId ) {
|
||||
if ( msgId == 0 ) {
|
||||
return;
|
||||
}
|
||||
synchronized ( this ){
|
||||
mReceivedMsgId.add( mCurrentIndex % MAX_CAP, msgId );
|
||||
mCurrentIndex++;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAck( byte[] headerBytes, byte[] payloadBytes ) {
|
||||
try {
|
||||
|
||||
@@ -428,6 +428,7 @@ public class MogoServiceProvider implements IMogoModuleProvider,
|
||||
|
||||
@Override
|
||||
public void onMapChanged( MogoLatLng latLng, float zoom, float tilt, float bearing ) {
|
||||
|
||||
if ( mIsCameraInited ) {
|
||||
mLastZoomLevel = zoom;
|
||||
mLastCustomRefreshCenterLocation = latLng;
|
||||
@@ -444,6 +445,7 @@ public class MogoServiceProvider implements IMogoModuleProvider,
|
||||
if ( mStatusManager.isUserInteracted() ) {
|
||||
mLastCustomRefreshCenterLocation = latLng;
|
||||
mLastZoomLevel = zoom;
|
||||
refreshCameraPosition();
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -487,6 +489,7 @@ public class MogoServiceProvider implements IMogoModuleProvider,
|
||||
if ( factor == 0.0f ) {
|
||||
return false;
|
||||
}
|
||||
Logger.d( TAG, "invokeRefreshWhenTranslationByUser,mLastCustomRefreshCenterLocation = %s, latLng = %s", mLastCustomRefreshCenterLocation, latLng );
|
||||
float distance = Utils.calculateLineDistance( latLng, mLastCustomRefreshCenterLocation );
|
||||
return distance > factor;
|
||||
} catch ( Exception e ) {
|
||||
@@ -500,6 +503,9 @@ public class MogoServiceProvider implements IMogoModuleProvider,
|
||||
if ( location == null ) {
|
||||
return;
|
||||
}
|
||||
|
||||
Logger.d( TAG, "onLocationChanged = %s", location );
|
||||
|
||||
// 自动刷新触发
|
||||
final MogoLatLng point = new MogoLatLng( location.getLatitude(), location.getLongitude() );
|
||||
if ( mLastAutoRefreshLocation == null ) {
|
||||
|
||||
@@ -510,8 +510,8 @@ public class MapMarkerManager implements IMogoMarkerClickListener, IMogoOnMessag
|
||||
if (isFirstMarker && isOnLineCard) {
|
||||
if (nearlyMogoMarker != null) {
|
||||
Logger.w(TAG, "ACC ON,或者语音搜索触发,默认选中最近的在线车辆nearlyMogoMarker:" + nearlyMogoMarker);
|
||||
// onMarkerClicked(nearlyMogoMarker);
|
||||
// MogoMarkersHandler.getInstance().onMarkerClicked(nearlyMogoMarker);
|
||||
onMarkerClicked(nearlyMogoMarker);
|
||||
MogoMarkersHandler.getInstance().onMarkerClicked(nearlyMogoMarker);
|
||||
isFirstMarker = false;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user