diff --git a/OCH/bus/driver/src/main/java/com/mogo/och/bus/presenter/BusLinePresenter.java b/OCH/bus/driver/src/main/java/com/mogo/och/bus/presenter/BusLinePresenter.java index 9411be65fd..8a54250475 100644 --- a/OCH/bus/driver/src/main/java/com/mogo/och/bus/presenter/BusLinePresenter.java +++ b/OCH/bus/driver/src/main/java/com/mogo/och/bus/presenter/BusLinePresenter.java @@ -62,7 +62,14 @@ public class BusLinePresenter extends Presenter implements IB @Override public void onChangeLineIdSuccess() { OrderModel.getInstance().clearBusStationDatas(); - runOnUIThread(() -> mView.onChangeLineIdSuccess()); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.onChangeLineIdSuccess(); + } + } + }, UiThreadHandler.MODE.QUEUE); } public void queryBusLines(){ @@ -105,6 +112,8 @@ public class BusLinePresenter extends Presenter implements IB @Override public void onBusLineTasks(BusQueryLineTaskResponse o, int position,boolean autoRefresh) { - mView.onBusLineTasks(o,position,autoRefresh); + if(mView!=null) { + mView.onBusLineTasks(o,position,autoRefresh); + } } } diff --git a/OCH/bus/driver/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java b/OCH/bus/driver/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java index ba144cf95a..72f14c7d25 100644 --- a/OCH/bus/driver/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java +++ b/OCH/bus/driver/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java @@ -84,8 +84,8 @@ public class BusPresenter extends Presenter OrderModel.getInstance().setControllerStatusCallback(this); OrderModel.getInstance().setPassengerCallback(this); OrderModel.getInstance().setAdasStatusCallback(this); - OchAutoPilotStatusListenerManager.INSTANCE.addListener(TAG,this); - LoginStatusManager.INSTANCE.addListener(TAG,this); + OchAutoPilotStatusListenerManager.INSTANCE.addListener(TAG, this); + LoginStatusManager.INSTANCE.addListener(TAG, this); } public void releaseListener() { @@ -108,7 +108,7 @@ public class BusPresenter extends Presenter } public void restartAutopilot() { - if (OrderModel.getInstance().isGoingToNextStation()){ + if (OrderModel.getInstance().isGoingToNextStation()) { OrderModel.getInstance().restartAutopilot(); } } @@ -119,32 +119,51 @@ public class BusPresenter extends Presenter } @Override - public void updateBusTaskStatus(String lineName,String lineTime, + public void updateBusTaskStatus(String lineName, String lineTime, List stationList, int arrivingOrArrivedIndex, boolean isArrived) { mStationList.clear(); mStationList.addAll(stationList); - if (arrivingOrArrivedIndex == 0 || isArrived){ + if (arrivingOrArrivedIndex == 0 || isArrived) { mCurrentStation = arrivingOrArrivedIndex; - }else { - mCurrentStation = arrivingOrArrivedIndex -1; + } else { + mCurrentStation = arrivingOrArrivedIndex - 1; } CallerLogger.d(M_BUS + "BusOrderModel =", " mCurrentStation =" + mCurrentStation); - if (mView != null) { - runOnUIThread(() -> mView.updateBusTaskStatus(lineName,lineTime, - stationList, arrivingOrArrivedIndex, isArrived)); - } + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if (mView != null) { + mView.updateBusTaskStatus(lineName, lineTime, + stationList, arrivingOrArrivedIndex, isArrived); + } + } + }, UiThreadHandler.MODE.QUEUE); } @Override public void updateEmptyUi() { - runOnUIThread(() -> mView.updateLineEmptyUI()); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if (mView != null) { + mView.updateLineEmptyUI(); + } + } + }, UiThreadHandler.MODE.QUEUE); } @Override public void clearBusStationsMarkers() { - runOnUIThread(() -> mView.clearBusStationsMarkers()); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if (mView != null) { + mView.clearBusStationsMarkers(); + } + } + }, UiThreadHandler.MODE.QUEUE); } @Override @@ -157,12 +176,12 @@ public class BusPresenter extends Presenter @Override public void onAutopilotArriveAtStation(ArrivedStation arrivedStation) { - CallerLogger.e( M_BUS + TAG, "行程日志-onAutopilotArriveAtStation arrive"); - arriveStation(arrivedStation,"底盘触发进站"); + CallerLogger.e(M_BUS + TAG, "行程日志-onAutopilotArriveAtStation arrive"); + arriveStation(arrivedStation, "底盘触发进站"); } - public void arriveStation(ArrivedStation arrivedStation,String type){ - OrderModel.getInstance().onArriveAt(arrivedStation,type); + public void arriveStation(ArrivedStation arrivedStation, String type) { + OrderModel.getInstance().onArriveAt(arrivedStation, type); } @Override @@ -186,16 +205,37 @@ public class BusPresenter extends Presenter return; } // 改变UI自动驾驶状态 - runOnUIThread(() -> mView.onAutopilotStatusChanged(state, CallerAutoPilotControlManager.INSTANCE.isCanStartAutopilot(false, 0))); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if (mView != null) { + mView.onAutopilotStatusChanged(state, CallerAutoPilotControlManager.INSTANCE.isCanStartAutopilot(false, 0)); + } + } + }, UiThreadHandler.MODE.QUEUE); break; case IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING: OrderModel.getInstance().triggerStartServiceEvent( - OrderModel.getInstance().isRestartAutopilot(), true); + OrderModel.getInstance().isRestartAutopilot(), true); // 改变UI自动驾驶状态 - runOnUIThread(() -> mView.onAutopilotStatusChanged(state, CallerAutoPilotControlManager.INSTANCE.isCanStartAutopilot(false, 0))); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if (mView != null) { + mView.onAutopilotStatusChanged(state, CallerAutoPilotControlManager.INSTANCE.isCanStartAutopilot(false, 0)); + } + } + }, UiThreadHandler.MODE.QUEUE); break; default: - runOnUIThread(() -> mView.onAutopilotEnableChange(false)); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if (mView != null) { + mView.onAutopilotEnableChange(false); + } + } + }, UiThreadHandler.MODE.QUEUE); break; } } @@ -208,26 +248,22 @@ public class BusPresenter extends Presenter @Override public void startOpenAutopilot() { //非美化模式下启动动画 - runOnUIThread(() -> mView.startAutopilotAnimation()); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if (mView != null) { + mView.startAutopilotAnimation(); + } + } + }, UiThreadHandler.MODE.QUEUE); //中间站点再次开启自驾时, 自动驾驶状态是2未改变, 此次鹰眼底层不再返给业务,需优化按钮动画显示 if (IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING - == CallerAutoPilotStatusListenerManager.INSTANCE.getState()){ + == CallerAutoPilotStatusListenerManager.INSTANCE.getState() && mView != null) { mView.onAutopilotStatusChanged(CallerAutoPilotStatusListenerManager.INSTANCE.getState(), CallerAutoPilotControlManager.INSTANCE.isCanStartAutopilot(false, 0)); } } - private void runOnUIThread(Runnable executor) { - if (executor == null) { - return; - } - if (Looper.myLooper() != Looper.getMainLooper()) { - UiThreadHandler.post(executor); - } else { - executor.run(); - } - } - /** * 测试使用 */ @@ -238,22 +274,24 @@ public class BusPresenter extends Presenter @Override public void onAutopilotGuardian(@Nullable MogoReportMsg.MogoReportMessage guardianInfo, long lineId) { - BusTrajectoryManager.getInstance().onAutopilotGuardian(guardianInfo,lineId); + BusTrajectoryManager.getInstance().onAutopilotGuardian(guardianInfo, lineId); } @Override public void onStatusChange(LoginStatusEnum currentStatus) { CallerLogger.d(M_BUS + TAG, " loginStatus =" + LoginStatusManager.isLogin()); - if(LoginStatusManager.isLogin()){ + if (LoginStatusManager.isLogin()) { OrderModel.getInstance().startOrStopOrderLoop(true); OrderModel.getInstance().queryBusRoutes(); - }else { + } else { BusTrajectoryManager.getInstance().stopTrajReqLoop(); OrderModel.getInstance().startOrStopOrderLoop(false); BusTrajectoryManager.getInstance().stopTrajReqLoop(); clearBusStationsMarkers(); - mView.hideSlidePanel(); + if(mView!=null) { + mView.hideSlidePanel(); + } OrderModel.getInstance().closeBeautificationMode(); } } @@ -261,9 +299,9 @@ public class BusPresenter extends Presenter @Override public void playPassenger(WriteOffPassenger passenger) { int passengerNum = passenger.passengerSize; - if (passengerNum > 1){ //多人播报 "x人" ---》x人核验通过 - OrderModel.getInstance().sendWriteOffNumToClient(passengerNum+"人核验通过"); - }else { //是 1 播放 "滴" 2022.11.09 改为: "核验通过" + if (passengerNum > 1) { //多人播报 "x人" ---》x人核验通过 + OrderModel.getInstance().sendWriteOffNumToClient(passengerNum + "人核验通过"); + } else { //是 1 播放 "滴" 2022.11.09 改为: "核验通过" // mView.playDI(); OrderModel.getInstance().sendWriteOffNumToClient("核验通过"); } @@ -272,11 +310,20 @@ public class BusPresenter extends Presenter @Override public void onStartAdasFailure() { - runOnUIThread(() -> mView.stopAnimAndUpdateBtnStatus()); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.stopAnimAndUpdateBtnStatus(); + } + } + }, UiThreadHandler.MODE.QUEUE); } @Override public void canStartAutopilot(boolean canStart) { - mView.onAutopilotStatusChanged(CallerAutoPilotStatusListenerManager.INSTANCE.getState(), canStart); + if(mView!=null) { + mView.onAutopilotStatusChanged(CallerAutoPilotStatusListenerManager.INSTANCE.getState(), canStart); + } } } diff --git a/OCH/shuttle/driver/src/main/java/com/mogo/och/shuttle/presenter/BusLinePresenter.java b/OCH/shuttle/driver/src/main/java/com/mogo/och/shuttle/presenter/BusLinePresenter.java index 28ae97e982..1830692e7e 100644 --- a/OCH/shuttle/driver/src/main/java/com/mogo/och/shuttle/presenter/BusLinePresenter.java +++ b/OCH/shuttle/driver/src/main/java/com/mogo/och/shuttle/presenter/BusLinePresenter.java @@ -56,13 +56,27 @@ public class BusLinePresenter extends Presenter implements IB @Override public void onBusLinesChange(BusQueryLinesResponse lines) { - runOnUIThread(() -> mView.onBusLinesChange(lines)); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.onBusLinesChange(lines); + } + } + }, UiThreadHandler.MODE.QUEUE); } @Override public void onChangeLineIdSuccess() { OrderModel.getInstance().clearBusStationDatas(); - runOnUIThread(() -> mView.onChangeLineIdSuccess()); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.onChangeLineIdSuccess(); + } + } + }, UiThreadHandler.MODE.QUEUE); } public void queryBusLines(){ @@ -105,6 +119,8 @@ public class BusLinePresenter extends Presenter implements IB @Override public void onBusLineTasks(BusQueryLineTaskResponse o, int position,boolean autoRefresh) { - mView.onBusLineTasks(o,position,autoRefresh); + if(mView!=null) { + mView.onBusLineTasks(o,position,autoRefresh); + } } } diff --git a/OCH/shuttle/driver/src/main/java/com/mogo/och/shuttle/presenter/BusPresenter.java b/OCH/shuttle/driver/src/main/java/com/mogo/och/shuttle/presenter/BusPresenter.java index 741f407be4..76a4ceb8a0 100644 --- a/OCH/shuttle/driver/src/main/java/com/mogo/och/shuttle/presenter/BusPresenter.java +++ b/OCH/shuttle/driver/src/main/java/com/mogo/och/shuttle/presenter/BusPresenter.java @@ -131,20 +131,40 @@ public class BusPresenter extends Presenter mCurrentStation = arrivingOrArrivedIndex -1; } CallerLogger.d(M_BUS + "BusOrderModel =", " mCurrentStation =" + mCurrentStation); - if (mView != null) { - runOnUIThread(() -> mView.updateBusTaskStatus(lineName,lineTime, - stationList, arrivingOrArrivedIndex, isArrived)); - } + + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.updateBusTaskStatus(lineName,lineTime, + stationList, arrivingOrArrivedIndex, isArrived); + } + } + }, UiThreadHandler.MODE.QUEUE); } @Override public void updateEmptyUi() { - runOnUIThread(() -> mView.updateLineEmptyUI()); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.updateLineEmptyUI(); + } + } + }, UiThreadHandler.MODE.QUEUE); } @Override public void clearBusStationsMarkers() { - runOnUIThread(() -> mView.clearBusStationsMarkers()); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.clearBusStationsMarkers(); + } + } + }, UiThreadHandler.MODE.QUEUE); } @Override @@ -181,16 +201,37 @@ public class BusPresenter extends Presenter return; } // 改变UI自动驾驶状态 - runOnUIThread(() -> mView.onAutopilotStatusChanged(state, CallerAutoPilotControlManager.INSTANCE.isCanStartAutopilot(false))); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.onAutopilotStatusChanged(state, CallerAutoPilotControlManager.INSTANCE.isCanStartAutopilot(false,0)); + } + } + }, UiThreadHandler.MODE.QUEUE); break; case IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING: OrderModel.getInstance().triggerStartServiceEvent( OrderModel.getInstance().isRestartAutopilot(), true); // 改变UI自动驾驶状态 - runOnUIThread(() -> mView.onAutopilotStatusChanged(state, CallerAutoPilotControlManager.INSTANCE.isCanStartAutopilot(false))); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.onAutopilotStatusChanged(state, CallerAutoPilotControlManager.INSTANCE.isCanStartAutopilot(false,0)); + } + } + }, UiThreadHandler.MODE.QUEUE); break; default: - runOnUIThread(() -> mView.onAutopilotEnableChange(false)); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.onAutopilotEnableChange(false); + } + } + }, UiThreadHandler.MODE.QUEUE); break; } } @@ -205,13 +246,20 @@ public class BusPresenter extends Presenter @Override public void startOpenAutopilot() { //非美化模式下启动动画 - runOnUIThread(() -> mView.startAutopilotAnimation()); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.startAutopilotAnimation(); + } + } + }, UiThreadHandler.MODE.QUEUE); //中间站点再次开启自驾时, 自动驾驶状态是2未改变, 此次鹰眼底层不再返给业务,需优化按钮动画显示 if (IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING - == CallerAutoPilotStatusListenerManager.INSTANCE.getState()){ + == CallerAutoPilotStatusListenerManager.INSTANCE.getState()&&mView!=null){ mView.onAutopilotStatusChanged(CallerAutoPilotStatusListenerManager.INSTANCE.getState(), - CallerAutoPilotControlManager.INSTANCE.isCanStartAutopilot(false)); + CallerAutoPilotControlManager.INSTANCE.isCanStartAutopilot(false,0)); } } @@ -250,18 +298,34 @@ public class BusPresenter extends Presenter BusTrajectoryManager.getInstance().stopTrajReqLoop(); BusTrajectoryManager.getInstance().stopTrajReqLoop(); clearBusStationsMarkers(); - mView.hideSlidePanel(); + if(mView!=null) { + mView.hideSlidePanel(); + } OrderModel.getInstance().closeBeautificationMode(); } } @Override public void onStartAdasFailure() { - runOnUIThread(() -> mView.stopAnimAndUpdateBtnStatus()); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.stopAnimAndUpdateBtnStatus(); + } + } + }, UiThreadHandler.MODE.QUEUE); } @Override public void canStartAutopilot(boolean canStart) { - runOnUIThread(() -> mView.onAutopilotStatusChanged(CallerAutoPilotStatusListenerManager.INSTANCE.getState(),canStart)); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.onAutopilotStatusChanged(CallerAutoPilotStatusListenerManager.INSTANCE.getState(),canStart); + } + } + }, UiThreadHandler.MODE.QUEUE); } } diff --git a/OCH/shuttle/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/presenter/BaseBusPassengerPresenter.java b/OCH/shuttle/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/presenter/BaseBusPassengerPresenter.java index eaeb5f5878..85d30ecf9a 100644 --- a/OCH/shuttle/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/presenter/BaseBusPassengerPresenter.java +++ b/OCH/shuttle/passenger/src/main/java/jinlv/com/mogo/och/shuttle/passenger/presenter/BaseBusPassengerPresenter.java @@ -38,14 +38,14 @@ public class BaseBusPassengerPresenter extends Presenter stations, int currentStationIndex, boolean isArrived) { - if(mView != null) { - UiThreadHandler.post(new Runnable() { - @Override - public void run() { + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if (mView != null) { mView.updateStationsInfo(stations, currentStationIndex, isArrived); } - },UiThreadHandler.MODE.QUEUE); - } + } + }, UiThreadHandler.MODE.QUEUE); } @Override public void showNoTaskView() { - if(mView != null) { - UiThreadHandler.post(new Runnable() { - @Override - public void run() { + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if (mView != null) { mView.showNoTaskView(); } - },UiThreadHandler.MODE.QUEUE); - } + } + }, UiThreadHandler.MODE.QUEUE); } @Override public void hideNoTaskView() { - if(mView != null) { - UiThreadHandler.post(new Runnable() { - @Override - public void run() { + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if (mView != null) { mView.hideNoTaskView(); } - },UiThreadHandler.MODE.QUEUE); - } + } + }, UiThreadHandler.MODE.QUEUE); } @Override public void routePlanningToNextStationChanged(long meters, long timeInSecond) { - if(mView != null) { - UiThreadHandler.post(new Runnable() { - @Override - public void run() { + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if (mView != null) { mView.updateRoutePlanningToNextStation(meters, timeInSecond); } - },UiThreadHandler.MODE.QUEUE); - } + } + }, UiThreadHandler.MODE.QUEUE); } @Override diff --git a/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/presenter/TaxiOperationalPresenter.java b/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/presenter/TaxiOperationalPresenter.java index f97b97d72a..7ee705bcbf 100644 --- a/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/presenter/TaxiOperationalPresenter.java +++ b/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/presenter/TaxiOperationalPresenter.java @@ -42,12 +42,26 @@ public class TaxiOperationalPresenter extends Presenter mView.onServiceDataUpdate(dailyTimeDuration,dailyOrderNum)); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.onServiceDataUpdate(dailyTimeDuration,dailyOrderNum); + } + } + }, UiThreadHandler.MODE.QUEUE); } @Override public void onOrdersListPageRefresh(List ordersList) { - runOnUIThread(() -> mView.onOrdersListPageRefresh(ordersList)); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.onOrdersListPageRefresh(ordersList); + } + } + }, UiThreadHandler.MODE.QUEUE); } private void runOnUIThread( Runnable executor ) { diff --git a/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/presenter/TaxiPresenter.java b/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/presenter/TaxiPresenter.java index 977948a0db..dd8da0424f 100644 --- a/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/presenter/TaxiPresenter.java +++ b/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/presenter/TaxiPresenter.java @@ -189,37 +189,79 @@ public class TaxiPresenter extends Presenter implements ITaxiADASS @Override public void onAutopilotEnable(boolean canStartAuto) { - runOnUIThread(() -> mView.updateAutopilotStatus( - IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE,canStartAuto)); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.updateAutopilotStatus( + IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE,canStartAuto); + } + } + }, UiThreadHandler.MODE.QUEUE); } @Override public void onAutopilotDisable(boolean canStartAuto) { - runOnUIThread(() -> mView.updateAutopilotStatus( - IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE,canStartAuto)); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.updateAutopilotStatus( + IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE,canStartAuto); + } + } + }, UiThreadHandler.MODE.QUEUE); } @Override public void onAutopilotRunning(boolean canStartAuto) { - runOnUIThread(() -> mView.updateAutopilotStatus( - IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING,canStartAuto)); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.updateAutopilotStatus( + IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING,canStartAuto); + } + } + }, UiThreadHandler.MODE.QUEUE); } @Override public void onManMachineCoDriving(boolean canStartAuto) { - runOnUIThread(() -> mView.onManMachineCoDriving(IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING,canStartAuto)); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.onManMachineCoDriving(IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING,canStartAuto); + } + } + }, UiThreadHandler.MODE.QUEUE); } @Override public void updateAutopilotStatus(boolean canStartAuto) { - runOnUIThread(() -> mView.updateAutopilotStatus( - CallerAutoPilotStatusListenerManager.INSTANCE.getState(),canStartAuto)); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.updateAutopilotStatus( + CallerAutoPilotStatusListenerManager.INSTANCE.getState(),canStartAuto); + } + } + }, UiThreadHandler.MODE.QUEUE); } @Override public void onStartAdasFailure() { - runOnUIThread(() -> mView.stopAnimAndUpdateBtnStatus()); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.stopAnimAndUpdateBtnStatus(); + } + } + }, UiThreadHandler.MODE.QUEUE); } @Override @@ -229,7 +271,14 @@ public class TaxiPresenter extends Presenter implements ITaxiADASS @Override public void onOrdersWaitServiceChanged(@NonNull @NotNull List waitServiceList) { - runOnUIThread(() -> mView.onOrdersWaitServiceChanged(waitServiceList)); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.onOrdersWaitServiceChanged(waitServiceList); + } + } + }, UiThreadHandler.MODE.QUEUE); } @RequiresApi(api = Build.VERSION_CODES.P) @@ -244,10 +293,15 @@ public class TaxiPresenter extends Presenter implements ITaxiADASS if (TaxiOrderStatusEnum.OnTheWayToEnd.getCode() == order.orderStatus) { TaxiModel.getInstance().startDynamicCalculateRouteInfo(); TaxiModel.getInstance().setStation(); - runOnUIThread(() -> { - mView.updateCtvAutopilotStatusTag(true); - CallerOrderListenerManager.INSTANCE.invokeOrderStatus(true); - }); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.updateCtvAutopilotStatusTag(true); + CallerOrderListenerManager.INSTANCE.invokeOrderStatus(true); + } + } + }, UiThreadHandler.MODE.QUEUE); } @@ -257,36 +311,69 @@ public class TaxiPresenter extends Presenter implements ITaxiADASS TaxiModel.getInstance().startOrStopCalculateRouteInfo(false); TaxiModel.getInstance().cleanLineMarker(); TaxiModel.getInstance().cleanStation(); - runOnUIThread(() -> { - /** 2023.12.18 1.去除"自驾/安全"模式选择,默认自驾模式且无需点击; - * 2.server去除订单流转对"安全确认"的限制(读写接口默认反馈ok,但"开启自动驾驶成功"不再限制) - */ - mView.updateCtvAutopilotStatusTag(false); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + /** 2023.12.18 1.去除"自驾/安全"模式选择,默认自驾模式且无需点击; + * 2.server去除订单流转对"安全确认"的限制(读写接口默认反馈ok,但"开启自动驾驶成功"不再限制) + */ + mView.updateCtvAutopilotStatusTag(false); - if (TaxiOrderStatusEnum.ArriveAtEnd.getCode() == order.orderStatus) { - CallerOrderListenerManager.INSTANCE.invokeOrderStatus(false); + if (TaxiOrderStatusEnum.ArriveAtEnd.getCode() == order.orderStatus) { + CallerOrderListenerManager.INSTANCE.invokeOrderStatus(false); + } + } } - }); + }, UiThreadHandler.MODE.QUEUE); } if (TaxiOrderStatusEnum.Cancel.getCode() == order.orderStatus) { VoiceNotice.showNotice("乘客已取消行程"); } - runOnUIThread(() -> mView.updateCurrentOrderStatusChanged(order)); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.updateCurrentOrderStatusChanged(order); + } + } + }, UiThreadHandler.MODE.QUEUE); } @Override public void onCurrentOrderCancelDone() { - runOnUIThread(() -> mView.onCurrentOrderCancelDone()); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.onCurrentOrderCancelDone(); + } + } + }, UiThreadHandler.MODE.QUEUE); } @Override public void onOrderCancelDone(String orderNo) { - runOnUIThread(() -> mView.onOrderCancelDone(orderNo)); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.onOrderCancelDone(orderNo); + } + } + }, UiThreadHandler.MODE.QUEUE); } @Override public void onCurrentOrderRouteInfoGot(OrderQueryRouteInfoRespBean.Result routeInfo) { - runOnUIThread(() -> mView.onCurrentOrderRouteInfoGot(routeInfo)); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.onCurrentOrderRouteInfoGot(routeInfo); + } + } + }, UiThreadHandler.MODE.QUEUE); } @Override @@ -295,44 +382,98 @@ public class TaxiPresenter extends Presenter implements ITaxiADASS @Override public void onCurrentOrderDistToEndChanged(long meters, long timeInSecond) { - runOnUIThread(() -> mView.onCurrentOrderDistToEndChanged(meters, timeInSecond)); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.onCurrentOrderDistToEndChanged(meters, timeInSecond); + } + } + }, UiThreadHandler.MODE.QUEUE); } @Override public void onNewBookingOrderGot(OrderQueryRespBean.Result order) { - runOnUIThread(() -> mView.onNewBookingOrderGot(order)); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.onNewBookingOrderGot(order); + } + } + }, UiThreadHandler.MODE.QUEUE); } @Override public void onGrabOrderExecuteDone() { - runOnUIThread(() -> mView.onGrabOrderExecuteDone()); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.onGrabOrderExecuteDone(); + } + } + }, UiThreadHandler.MODE.QUEUE); } @Override public void onGrabOrderSuccess(OrderQueryRespBean.Result order) { - runOnUIThread(() -> mView.onGrabOrderSuccess(order)); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.onGrabOrderSuccess(order); + } + } + }, UiThreadHandler.MODE.QUEUE); } @Override public void onGrabOrderFailed(OrderQueryRespBean.Result order) { - runOnUIThread(() -> mView.onGrabOrderFailed(order)); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.onGrabOrderFailed(order); + } + } + }, UiThreadHandler.MODE.QUEUE); } @Override public void onDriverHasCheckedPilotCondition() { - runOnUIThread(() -> mView.onCheckPilotConditionSafe()); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.onCheckPilotConditionSafe(); + } + } + }, UiThreadHandler.MODE.QUEUE); } @Override public void onNaviToEnd(boolean isAmap, boolean isShow) { - runOnUIThread(() -> mView.onNaviToEnd(isAmap, isShow)); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.onNaviToEnd(isAmap, isShow); + } + } + }, UiThreadHandler.MODE.QUEUE); } @Override public void startOpenAutopilot() { - runOnUIThread(() -> { - mView.startOrStopLoadingAnim(true); - }); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.startOrStopLoadingAnim(true); + } + } + }, UiThreadHandler.MODE.QUEUE); } @Override @@ -347,15 +488,25 @@ public class TaxiPresenter extends Presenter implements ITaxiADASS role = TaxiConst.TEST_USER; } String finalRole = role; - runOnUIThread(() -> { - mView.setRole(finalRole); - }); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.setRole(finalRole); + } + } + }, UiThreadHandler.MODE.QUEUE); } @Override public void onOpenOrderStatusEnumChange(OpenOrderStatusEnum businessEnum) { - runOnUIThread(() -> { - mView.updateOperationStatus(LoginStatusManager.getOpenOrderType()); - }); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.updateOperationStatus(LoginStatusManager.getOpenOrderType()); + } + } + }, UiThreadHandler.MODE.QUEUE); } } diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/base/TaxiPresenter.java b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/base/TaxiPresenter.java index b38a1cb3d9..3f0c3169f4 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/base/TaxiPresenter.java +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/base/TaxiPresenter.java @@ -69,17 +69,6 @@ public class TaxiPresenter extends Presenter implements ITaxiADASS LoginStatusManager.INSTANCE.removeListener(TAG); } - private void runOnUIThread(Runnable executor) { - if (executor == null) { - return; - } - if (Looper.myLooper() != Looper.getMainLooper()) { - UiThreadHandler.post(executor); - } else { - executor.run(); - } - } - /** * 开启自动驾驶 自驾模式 */ @@ -111,95 +100,179 @@ public class TaxiPresenter extends Presenter implements ITaxiADASS @Override public void onAutopilotEnable(boolean canStartAuto) { - runOnUIThread(() -> mView.updateAutopilotStatus( - IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE,canStartAuto)); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.updateAutopilotStatus( + IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE,canStartAuto); + } + } + }, UiThreadHandler.MODE.QUEUE); + } @Override public void onAutopilotDisable(boolean canStartAuto) { - runOnUIThread(() -> mView.updateAutopilotStatus( - IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE,canStartAuto)); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.updateAutopilotStatus( + IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE,canStartAuto); + } + } + }, UiThreadHandler.MODE.QUEUE); + } @Override public void onAutopilotRunning(boolean canStartAuto) { - runOnUIThread(() -> mView.updateAutopilotStatus( - IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING,canStartAuto)); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.updateAutopilotStatus( + IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING,canStartAuto); + } + } + }, UiThreadHandler.MODE.QUEUE); + } @Override public void onParallelDrivingStatus(boolean canStartAuto) { - runOnUIThread(() -> mView.onParallelDrivingStatus(IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING,canStartAuto)); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.onParallelDrivingStatus(IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING,canStartAuto); + } + } + }, UiThreadHandler.MODE.QUEUE); + } @Override public void onStartAdasFailure() { - runOnUIThread(() -> mView.stopAnimAndUpdateBtnStatus()); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.stopAnimAndUpdateBtnStatus(); + } + } + }, UiThreadHandler.MODE.QUEUE); + } @Override public void updateAutopilotStatus(boolean canStartAuto) { - mView.updateAutopilotStatus(CallerAutoPilotStatusListenerManager.INSTANCE.getState(),canStartAuto); + if(mView!=null) { + mView.updateAutopilotStatus(CallerAutoPilotStatusListenerManager.INSTANCE.getState(), canStartAuto); + } } @Override public void onNaviToEnd(boolean isAmap, boolean isShow) { - runOnUIThread(() -> mView.onNaviToEnd(isAmap, isShow)); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + onNaviToEnd(isAmap, isShow); + } + } + }, UiThreadHandler.MODE.QUEUE); + } @Override public void onVRModeChanged(boolean isVRMode) { - runOnUIThread(() -> mView.switchVRFlatMode(isVRMode)); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.switchVRFlatMode(isVRMode); + } + } + }, UiThreadHandler.MODE.QUEUE); + } @Override public void onCarLocationChanged(MogoLocation location) { -// if (null != location) { -// runOnUIThread(() -> { -// mView.updateSpeedView((float) location.getGnssSpeed()); -// }); -// } + } @Override public void startOpenAutopilot() { - runOnUIThread(() -> { - mView.startOrStopLoadingAnim(true); - }); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.startOrStopLoadingAnim(true); + } + } + }, UiThreadHandler.MODE.QUEUE); + } @Override public void startOpenAutopilotNonManual() { - runOnUIThread(() -> { - mView.startOrStopLoadingAnim(true); - mView.showStartAutopilotBlinkAnimation(); - }); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.startOrStopLoadingAnim(true); + mView.showStartAutopilotBlinkAnimation(); + } + } + }, UiThreadHandler.MODE.QUEUE); + } @Override public void stopOpenAutopilotNonManual(boolean canStartAuto) { - runOnUIThread(() -> { - mView.startOrStopLoadingAnim(false); - mView.updateAutopilotStatus(CallerAutoPilotStatusListenerManager.INSTANCE.getState(),canStartAuto); - mView.stopAutopilotBlinkAnimation(); - }); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.startOrStopLoadingAnim(false); + mView.updateAutopilotStatus(CallerAutoPilotStatusListenerManager.INSTANCE.getState(),canStartAuto); + mView.stopAutopilotBlinkAnimation(); + } + } + }, UiThreadHandler.MODE.QUEUE); + } @Override public void pauseOpenAutopilotNonManual(boolean canStartAuto) { - runOnUIThread(() -> { - mView.startOrStopLoadingAnim(false); - mView.updateAutopilotStatus(CallerAutoPilotStatusListenerManager.INSTANCE.getState(),canStartAuto); - mView.pauseAutopilotBlinkAnimation(); - }); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.startOrStopLoadingAnim(false); + mView.updateAutopilotStatus(CallerAutoPilotStatusListenerManager.INSTANCE.getState(),canStartAuto); + mView.pauseAutopilotBlinkAnimation(); + } + } + }, UiThreadHandler.MODE.QUEUE); + } @Override public void resumeOpenAutopilotNonManual() { - runOnUIThread(() -> { - mView.startOrStopLoadingAnim(true); - mView.resumeAutopilotBlinkAnimation(); - }); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.startOrStopLoadingAnim(true); + mView.resumeAutopilotBlinkAnimation(); + } + } + }, UiThreadHandler.MODE.QUEUE); + } @Override @@ -212,12 +285,18 @@ public class TaxiPresenter extends Presenter implements ITaxiADASS role = TaxiUnmannedConst.TEST_USER; } String finalRole = role; - runOnUIThread(() -> { - mView.updateOperationStatus(LoginStatusManager.getOpenOrderType()); - mView.setRole(finalRole); - }); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.updateOperationStatus(LoginStatusManager.getOpenOrderType()); + mView.setRole(finalRole); + } + } + }, UiThreadHandler.MODE.QUEUE); - if (!TaxiTaskModel.INSTANCE.checkCurrentTaskCondition()) { + + if (!TaxiTaskModel.INSTANCE.checkCurrentTaskCondition()&&mView!=null) { mView.showDebugPanel(); } @@ -226,9 +305,14 @@ public class TaxiPresenter extends Presenter implements ITaxiADASS @Override public void onOpenOrderStatusEnumChange(OpenOrderStatusEnum businessEnum) { - runOnUIThread(() -> { - mView.updateOperationStatus(LoginStatusManager.getOpenOrderType()); - }); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if(mView!=null) { + mView.updateOperationStatus(LoginStatusManager.getOpenOrderType()); + } + } + }, UiThreadHandler.MODE.QUEUE); } public void stopAutoStartAutopilot() { diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/navi/auto/RoutingNaviPresenter.java b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/navi/auto/RoutingNaviPresenter.java index 6a5c1f0adc..251a133779 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/navi/auto/RoutingNaviPresenter.java +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/navi/auto/RoutingNaviPresenter.java @@ -62,11 +62,20 @@ public class RoutingNaviPresenter extends Presenter imp @Override public void setLineMarker(LatLng startStation, LatLng endStation) { - runOnUIThread(() -> mView.setLineMarker(startStation, endStation)); + UiThreadHandler.post(new Runnable() { + @Override + public void run() { + if (mView != null) { + mView.setLineMarker(startStation, endStation); + } + } + }, UiThreadHandler.MODE.QUEUE); } @Override public void routeResult(List routeArrivied, List routeArriving, MogoLocation location) { - mView.routeResult(routeArrivied, routeArriving, location); + if (mView != null) { + mView.routeResult(routeArrivied, routeArriving, location); + } } } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainPresenter.java b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainPresenter.java index d81698c0bc..30fdc00408 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainPresenter.java +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainPresenter.java @@ -27,13 +27,15 @@ public class MainPresenter extends Presenter { @Override public void handleMessage(Message msg) { super.handleMessage(msg); - switch (msg.what) { - case MainConstants.MSG_HIDE_MAP_COVER_FRAME: - mView.hideCoverUpLayout(); - break; - case MainConstants.MSG_LOAD_MODULES: - mView.loadModules(); - break; + if(mView!=null) { + switch (msg.what) { + case MainConstants.MSG_HIDE_MAP_COVER_FRAME: + mView.hideCoverUpLayout(); + break; + case MainConstants.MSG_LOAD_MODULES: + mView.loadModules(); + break; + } } } };