This commit is contained in:
wangcongtao
2020-02-20 15:46:39 +08:00
parent 5367a82c47
commit 8047ee92cc
5 changed files with 38 additions and 3 deletions

View File

@@ -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;
}

View File

@@ -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;
/**
* 卡片 车聊聊
*/