opt
This commit is contained in:
@@ -113,6 +113,18 @@ public class MogoServiceProvider implements IMogoModuleProvider,
|
||||
*/
|
||||
private boolean mIsCameraInited = true;
|
||||
|
||||
/**
|
||||
* 是否针对第一次请求失败的情况(开机请求、地库长时间没网络)
|
||||
* <p>
|
||||
* 说明:第一次地位成功,因为网络问题,导致请求失败,则在其他策略请求之前,尝试10s请求一次。
|
||||
*/
|
||||
private boolean mLoopRequest = false;
|
||||
|
||||
/**
|
||||
* 刷新补偿间隔
|
||||
*/
|
||||
private long mLoopInterval = 10_000L;
|
||||
|
||||
private Handler mHandler = new Handler( Looper.getMainLooper() ) {
|
||||
@Override
|
||||
public void handleMessage( @NonNull Message msg ) {
|
||||
@@ -127,7 +139,7 @@ public class MogoServiceProvider implements IMogoModuleProvider,
|
||||
if ( mRefreshRemainingTime == 0 ) {
|
||||
Logger.d( TAG, "move to center and refresh data." );
|
||||
mStatusManager.setUserInteractionStatus( ServiceConst.TYPE, true, false );
|
||||
mUiController.moveToCenter( mLastAutoRefreshLocation );
|
||||
mUiController.recoverLockMode();
|
||||
mStatusManager.setUserInteractionStatus( TAG, true, false );
|
||||
mUiController.changeZoom( 16.0f );
|
||||
notifyRefreshData( mLastAutoRefreshLocation, getQueryRadius(), mAutoRefreshCallback );
|
||||
@@ -135,6 +147,12 @@ public class MogoServiceProvider implements IMogoModuleProvider,
|
||||
mHandler.sendEmptyMessageDelayed( msg.what, ServiceConst.DECREASE_INTERVAL );
|
||||
}
|
||||
break;
|
||||
case ServiceConst.MSG_LOOP_REQUEST:
|
||||
if ( mLoopRequest ) {
|
||||
Logger.d( TAG, "补偿刷新触发" );
|
||||
notifyRefreshData( mLastAutoRefreshLocation, getQueryRadius(), mAutoRefreshCallback );
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -156,6 +174,7 @@ public class MogoServiceProvider implements IMogoModuleProvider,
|
||||
private RefreshCallback mCustomRefreshCallback = new RefreshCallback() {
|
||||
@Override
|
||||
public void onSuccess() {
|
||||
mLoopRequest = false;
|
||||
mRefreshRemainingTimeStatus = false;
|
||||
// 用户手动操作地图刷新成功后,设置状态为 true,引发延时策略
|
||||
mStatusManager.setUserInteractionStatus( ServiceConst.TYPE, true, true );
|
||||
@@ -173,12 +192,17 @@ public class MogoServiceProvider implements IMogoModuleProvider,
|
||||
private RefreshCallback mAutoRefreshCallback = new RefreshCallback() {
|
||||
@Override
|
||||
public void onSuccess() {
|
||||
mLoopRequest = false;
|
||||
invokeAutoRefreshStrategy();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFail() {
|
||||
invokeAutoRefreshStrategy();
|
||||
if ( mLoopRequest ) {
|
||||
mHandler.sendEmptyMessageDelayed( ServiceConst.MSG_LOOP_REQUEST, ServiceConst.LOOP_INTERVAL );
|
||||
} else {
|
||||
invokeAutoRefreshStrategy();
|
||||
}
|
||||
}
|
||||
|
||||
private void invokeAutoRefreshStrategy() {
|
||||
@@ -480,6 +504,7 @@ public class MogoServiceProvider implements IMogoModuleProvider,
|
||||
final MogoLatLng point = new MogoLatLng( location.getLatitude(), location.getLongitude() );
|
||||
if ( mLastAutoRefreshLocation == null ) {
|
||||
mLastAutoRefreshLocation = point;
|
||||
mLoopRequest = true;
|
||||
notifyRefreshData( mLastAutoRefreshLocation, getQueryRadius(), mAutoRefreshCallback );
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -27,6 +27,16 @@ public class ServiceConst {
|
||||
*/
|
||||
public static final int DECREASE_INTERVAL = 1_000;
|
||||
|
||||
/**
|
||||
* 刷新失败补偿消息
|
||||
*/
|
||||
public static final int MSG_LOOP_REQUEST = 10_000;
|
||||
|
||||
/**
|
||||
* 刷新失败补偿时间间隔
|
||||
*/
|
||||
public static final int LOOP_INTERVAL = 10_000;
|
||||
|
||||
/**
|
||||
* 卡片 车聊聊
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user