From 9f2d5d8fbf42c4ff8c93c0769a0d543b4fee1b01 Mon Sep 17 00:00:00 2001 From: wangmingjun Date: Fri, 9 Sep 2022 15:15:50 +0800 Subject: [PATCH 1/6] =?UTF-8?q?[1.5.0]=201=E3=80=81=E8=A7=A3=E5=86=B3bus?= =?UTF-8?q?=E4=B9=98=E5=AE=A2=E5=B1=8F=E5=B0=8F=E5=9C=B0=E5=9B=BE=E9=97=AA?= =?UTF-8?q?=E7=83=81=202=E3=80=81=E8=88=8D=E5=BC=83=E5=8F=96=E4=B8=A4?= =?UTF-8?q?=E7=AB=99=E9=97=B4=E8=BD=A8=E8=BF=B9=E6=8A=A5=E9=94=99=E6=83=85?= =?UTF-8?q?=E5=86=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../passenger/model/BusPassengerModel.java | 4 +++- .../ui/BusPassengerMapDirectionView.java | 19 ++++++++++--------- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/model/BusPassengerModel.java b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/model/BusPassengerModel.java index 9dc79238ae..a6f3aa85bf 100644 --- a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/model/BusPassengerModel.java +++ b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/model/BusPassengerModel.java @@ -432,7 +432,9 @@ public class BusPassengerModel { //要前往的站在轨迹中对应的点 int nextRouteIndex = CoordinateCalculateRouteUtil.getArrivedPointIndex(mRoutePoints ,stationNext.getGcjLon(),stationNext.getGcjLat()); - mTwoStationsRouts.addAll(mRoutePoints.subList(currentRouteIndex,nextRouteIndex)); + if (currentRouteIndex < nextRouteIndex){ //如果找到的next在起点的轨迹前面,直接舍弃这个轨迹,不显示 + mTwoStationsRouts.addAll(mRoutePoints.subList(currentRouteIndex,nextRouteIndex)); + } } }else { //只有两个站点的时候整个路线就是两个站点之间的轨迹 mTwoStationsRouts.clear(); diff --git a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/ui/BusPassengerMapDirectionView.java b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/ui/BusPassengerMapDirectionView.java index a663e20563..f4ba291f5c 100644 --- a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/ui/BusPassengerMapDirectionView.java +++ b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/ui/BusPassengerMapDirectionView.java @@ -57,8 +57,8 @@ public class BusPassengerMapDirectionView private int mCurrentIndex = -1; private int zoomLevel = 13; - private List mCoordinatesLatLng = new ArrayList<>(); - private List mLinePointsLatLng = new ArrayList<>(); + private List mCoordinatesLatLng = new ArrayList<>(); //站点坐标数据 + private List mLinePointsLatLng = new ArrayList<>(); //轨迹坐标数据 private Polyline mPolyline; private CameraUpdate mCameraUpdate; private Context mContext; @@ -197,7 +197,7 @@ public class BusPassengerMapDirectionView mCarMarker.setToTop(); } - if (mLinePointsLatLng.size() > 1){ + if (mLinePointsLatLng.size() > 0){ //圈定地图显示范围 //存放经纬度 LatLngBounds.Builder boundsBuilder = new LatLngBounds.Builder(); @@ -208,12 +208,13 @@ public class BusPassengerMapDirectionView //第二个参数为四周留空宽度 mAMap.moveCamera(CameraUpdateFactory.newLatLngBoundsRect(boundsBuilder.build(),100,100,100,100)); - }else { - //设置希望展示的地图缩放级别 - CameraPosition cameraPosition = new CameraPosition.Builder() - .target(mCarMarker.getPosition()).tilt(0).bearing(location.getBearing()).zoom(zoomLevel).build(); - mAMap.moveCamera(CameraUpdateFactory.newCameraPosition(cameraPosition)); } +// else { +// //设置希望展示的地图缩放级别 +// CameraPosition cameraPosition = new CameraPosition.Builder() +// .target(mCarMarker.getPosition()).tilt(0).bearing(location.getBearing()).zoom(zoomLevel).build(); +// mAMap.moveCamera(CameraUpdateFactory.newCameraPosition(cameraPosition)); +// } } @@ -368,7 +369,7 @@ public class BusPassengerMapDirectionView mLinePointsLatLng.clear(); mLinePointsLatLng.addAll(routeLineLatLngs); - if (mCoordinatesLatLng.size() > 0 && mCurrentIndex != currentIndex) { + if (mLinePointsLatLng.size() > 0 && mCurrentIndex != currentIndex) { if (mAMap != null && mLineMarkers.size() > 0) { mCurrentIndex = currentIndex; for (int i = 0; i < mLineMarkers.size(); i++) { From f1b86b2acfac12ec21913f4bf865a6b4aa9b67e2 Mon Sep 17 00:00:00 2001 From: yangyakun Date: Fri, 9 Sep 2022 15:22:26 +0800 Subject: [PATCH 2/6] =?UTF-8?q?[fix]=20=E9=98=B2=E6=AD=A2=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2=E9=87=8D=E5=A4=8D=E5=BC=B9=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/mogo/och/taxi/ui/TaxiFragment.java | 14 ++++++++++++-- .../mogo/och/taxi/ui/TaxiLoginDialogFragment.kt | 2 +- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiFragment.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiFragment.java index 305a7372c8..af84d17295 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiFragment.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiFragment.java @@ -13,6 +13,8 @@ import android.widget.TextView; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.RequiresApi; +import androidx.fragment.app.DialogFragment; +import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentTransaction; import com.mogo.commons.debug.DebugConfig; @@ -381,8 +383,15 @@ public class TaxiFragment extends BaseTaxiTabFragment(TaxiLoginDialogFragment.newInstance()); } @@ -394,7 +403,8 @@ public class TaxiFragment extends BaseTaxiTabFragment { taxiLoginDialogFragment.clear(); mPresenter.queryLoginStatus(); diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiLoginDialogFragment.kt b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiLoginDialogFragment.kt index e9cd5ce680..1697eee8e7 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiLoginDialogFragment.kt +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiLoginDialogFragment.kt @@ -230,7 +230,7 @@ class TaxiLoginDialogFragment : MvpDialogFragment Date: Fri, 9 Sep 2022 17:08:38 +0800 Subject: [PATCH 3/6] =?UTF-8?q?[CodeFix]=E4=BC=98=E5=8C=96=E5=B7=A5?= =?UTF-8?q?=E6=8E=A7=E6=9C=BA=E7=8A=B6=E6=80=81=E4=B8=8A=E4=BC=A0=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MoGoAdasMsgConnectStatusListenerImpl.kt | 29 ++++++++++--------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/adapter/MoGoAdasMsgConnectStatusListenerImpl.kt b/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/adapter/MoGoAdasMsgConnectStatusListenerImpl.kt index 52271dd4ab..0029d8a55e 100644 --- a/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/adapter/MoGoAdasMsgConnectStatusListenerImpl.kt +++ b/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/adapter/MoGoAdasMsgConnectStatusListenerImpl.kt @@ -22,11 +22,9 @@ import com.zhidao.support.adas.high.common.Constants import com.zhidao.support.adas.high.common.Constants.ENVIRONMENT.* import com.zhidao.support.adas.high.common.Constants.TERMINAL_ROLE.DRIVER import com.zhidao.support.adas.high.common.Constants.TERMINAL_ROLE.PASSENGER -import io.reactivex.Flowable -import io.reactivex.android.schedulers.AndroidSchedulers -import io.reactivex.schedulers.Schedulers import mogo.telematics.pad.MessagePad -import java.util.concurrent.TimeUnit +import java.util.* +import java.util.concurrent.atomic.* /** * ADAS-SDK与工控机连接状态回调 @@ -43,6 +41,10 @@ class MoGoAdasMsgConnectStatusListenerImpl : OnAdasConnectStatusListener, private var connectStatus = false + private val hasUploadTaskLaunched by lazy { AtomicBoolean(false) } + + private val timer = Timer() + init { CallerCloudListenerManager.registerCloudListener(TAG, this) } @@ -167,15 +169,16 @@ class MoGoAdasMsgConnectStatusListenerImpl : OnAdasConnectStatusListener, */ @SuppressLint("CheckResult") private fun updateDriveStatusTask() { - CallerLogger.d("$M_ADAS_IMPL$TAG", "updateDriveStatusTask") - Flowable.interval(0, 5, TimeUnit.SECONDS) - .subscribeOn(Schedulers.io()) - .unsubscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe { - AdasServiceModel.getInstance() - .updateDriveStatus(mCurrentAutopilotStatus, mCurrentAutopilotSpeed) - } + if (hasUploadTaskLaunched.compareAndSet(false, true)) { + timer.schedule(object : TimerTask() { + override fun run() { + CallerLogger.d("$M_ADAS_IMPL$TAG", "updateDriveStatusTask") + AdasServiceModel.getInstance() + .updateDriveStatus(mCurrentAutopilotStatus, mCurrentAutopilotSpeed) + } + }, 0, 5000) + } + } override fun tokenGot(sn: String) { From d8a607aefc3c8654277ef7158779b7c587ad59cc Mon Sep 17 00:00:00 2001 From: renwj Date: Fri, 9 Sep 2022 18:07:00 +0800 Subject: [PATCH 4/6] =?UTF-8?q?[V2X]=E9=81=93=E8=B7=AF=E6=96=BD=E5=B7=A5?= =?UTF-8?q?=E4=BA=8B=E4=BB=B6=EF=BC=88AI=E4=BA=91=EF=BC=89=E5=8E=BB?= =?UTF-8?q?=E6=8E=89=E5=9B=B4=E6=A0=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../scene/road/V2XRoadEventMarker.java | 54 +++++++++---------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/road/V2XRoadEventMarker.java b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/road/V2XRoadEventMarker.java index 64b46354f2..b2ea3362a4 100644 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/road/V2XRoadEventMarker.java +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/scenario/scene/road/V2XRoadEventMarker.java @@ -92,33 +92,33 @@ public class V2XRoadEventMarker implements IV2XMarker { } } - if (polygons.size() > 1) { - if (overlayManager == null) { - overlayManager = MogoOverlayManager.getInstance(); - } - MogoPolylineOptions options = new MogoPolylineOptions(); - List colors = new ArrayList<>(); - colors.add(Color.argb(204, 237, 172, 21)); - colors.add(Color.argb(0, 255, 255, 255)); - options.colorValues(colors); - List points = new ArrayList<>(); - for (int i = 0; i < polygons.size(); i++) { - Pair p = polygons.get(i); - points.add(new MogoLatLng(p.second, p.first)); - } - if (points.size() > 2) { - points.add(points.get(0)); - } - options.points(points); - options.useGradient(true); - options.useFacade(true); - options.setGps(false); - options.width(5f); - options.zIndex(75000f); - options.maxIndex(800000f); - polyline = overlayManager.addPolyline(options); - polyline.setVisible(true); - } +// if (polygons.size() > 1) { +// if (overlayManager == null) { +// overlayManager = MogoOverlayManager.getInstance(); +// } +// MogoPolylineOptions options = new MogoPolylineOptions(); +// List colors = new ArrayList<>(); +// colors.add(Color.argb(204, 237, 172, 21)); +// colors.add(Color.argb(0, 255, 255, 255)); +// options.colorValues(colors); +// List points = new ArrayList<>(); +// for (int i = 0; i < polygons.size(); i++) { +// Pair p = polygons.get(i); +// points.add(new MogoLatLng(p.second, p.first)); +// } +// if (points.size() > 2) { +// points.add(points.get(0)); +// } +// options.points(points); +// options.useGradient(true); +// options.useFacade(true); +// options.setGps(false); +// options.width(5f); +// options.zIndex(75000f); +// options.maxIndex(800000f); +// polyline = overlayManager.addPolyline(options); +// polyline.setVisible(true); +// } } } } From bf2f02a5c598d1362c89cca725746df55745913a Mon Sep 17 00:00:00 2001 From: wangmingjun Date: Fri, 9 Sep 2022 18:28:50 +0800 Subject: [PATCH 5/6] =?UTF-8?q?[2.10.0]=20bus=E5=8F=B8=E6=9C=BA=E7=AB=AF?= =?UTF-8?q?=E5=88=87=E6=8D=A2=E8=B7=AF=E7=BA=BF=E6=97=B6=E6=B8=85=E9=99=A4?= =?UTF-8?q?=E5=8E=9F=E8=B7=AF=E7=BA=BF=E8=B5=B7=E7=BB=88=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../callback/IRefreshBusStationsCallback.java | 1 + .../mogo/och/bus/fragment/BusFragment.java | 21 ++++++++++++------- .../com/mogo/och/bus/model/BusOrderModel.java | 6 ++++++ .../och/bus/presenter/BusLinePresenter.java | 1 + .../mogo/och/bus/presenter/BusPresenter.java | 5 +++++ 5 files changed, 26 insertions(+), 8 deletions(-) diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/callback/IRefreshBusStationsCallback.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/callback/IRefreshBusStationsCallback.java index ae4a8b9713..40ea27c44a 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/callback/IRefreshBusStationsCallback.java +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/callback/IRefreshBusStationsCallback.java @@ -10,4 +10,5 @@ import java.util.List; */ public interface IRefreshBusStationsCallback { void refreshBusStations(String lineName,List stationList, int currentStation, int nextStation, boolean isArrived); + void clearBusStationsMarkers(); } diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/BusFragment.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/BusFragment.java index 645690253e..7278755f1a 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/BusFragment.java +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/BusFragment.java @@ -317,14 +317,19 @@ public class BusFragment extends BaseBusTabFragment hideSlidePanel(); hidPanel(); //移除起点终点 - if (null != startStation) { - setOrRemoveMapMaker(false, BusConst.BUS_START_MAP_MAKER, startStation.getLat() - , startStation.getLon(),R.raw.star_marker); - } - if (null != endStation) { - setOrRemoveMapMaker(false, BusConst.BUS_END_MAP_MAKER, endStation.getLat() - , endStation.getLon(),R.raw.end_marker); - } + clearBusStationsMarkers(); + } + } + + public void clearBusStationsMarkers(){ + CallerLogger.INSTANCE.d(M_BUS + TAG,"clearBusStationsMarkers()"); + if (null != startStation) { + setOrRemoveMapMaker(false, BusConst.BUS_START_MAP_MAKER, startStation.getLat() + , startStation.getLon(),R.raw.star_marker); + } + if (null != endStation) { + setOrRemoveMapMaker(false, BusConst.BUS_END_MAP_MAKER, endStation.getLat() + , endStation.getLon(),R.raw.end_marker); } } diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusOrderModel.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusOrderModel.java index 030b25eb34..54e2773b9e 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusOrderModel.java +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusOrderModel.java @@ -819,6 +819,12 @@ public class BusOrderModel { BusTrajectoryManager.getInstance().syncTrajectoryInfo(); } + public void clearBusStationDatas(){ + if (refreshBusStationsCallback != null){ + refreshBusStationsCallback.clearBusStationsMarkers(); + } + } + /** * 根据订单状态、获取下一站靠站的的站点 * diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/presenter/BusLinePresenter.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/presenter/BusLinePresenter.java index c2f6fb57da..bafd9f298b 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/presenter/BusLinePresenter.java +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/presenter/BusLinePresenter.java @@ -53,6 +53,7 @@ public class BusLinePresenter extends Presenter implements IB @Override public void onChangeLineIdSuccess() { + BusOrderModel.getInstance().clearBusStationDatas(); runOnUIThread(() -> mView.onChangeLineIdSuccess()); } diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java index 6ea7f617c4..15b161f032 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java @@ -137,6 +137,11 @@ public class BusPresenter extends Presenter } } + @Override + public void clearBusStationsMarkers() { + runOnUIThread(() -> mView.clearBusStationsMarkers()); + } + private void functionDemoModeChange() { // CallerLogger.INSTANCE.d(M_BUS + "BusOrderModel ="," functionDemoModeChange ="+mCurrentStation); if (FunctionBuildConfig.isDemoMode From bb89e4672e6bc8a03e60ddd33a11d0e91ae5f832 Mon Sep 17 00:00:00 2001 From: wangmingjun Date: Fri, 9 Sep 2022 20:01:19 +0800 Subject: [PATCH 6/6] =?UTF-8?q?[2.10.0]=20taxi=E5=8F=B8=E6=9C=BA=E7=AB=AF?= =?UTF-8?q?=EF=BC=8C=E8=A7=A3=E5=86=B3=E5=89=8D=E5=BE=80=E4=B9=98=E5=AE=A2?= =?UTF-8?q?=E4=B8=8A=E8=BD=A6=E7=82=B9=E9=87=8C=E7=A8=8B=E6=98=BE=E7=A4=BA?= =?UTF-8?q?bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/mogo/och/taxi/model/TaxiModel.java | 3 ++- .../java/com/mogo/och/taxi/model/TaxiModelLoopManager.java | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java index d073bbc7c5..873e27282b 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java @@ -866,6 +866,7 @@ public class TaxiModel { //清除订单信息 public void clearCurrentOCHOrder() { + startOrStopCalculateRouteInfo(false); mCurrentOCHOrder = null; TaxiTrajectoryManager.getInstance().syncTrajectoryInfo(); SharedPrefsMgr.getInstance(mContext).remove(TaxiConst.SP_KEY_OCH_TAXI_ORDER); @@ -1415,7 +1416,7 @@ public class TaxiModel { TaxiModelLoopManager.getInstance().startCalculateRouteInfoLoop(); } else { mRoutePoints.clear(); - TaxiModelLoopManager.getInstance().stopCalculateRouteInfLoop(); + TaxiModelLoopManager.getInstance().stopCalculateRouteInfoLoop(); } } diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModelLoopManager.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModelLoopManager.java index 63f281cacf..3a771ca3ae 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModelLoopManager.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModelLoopManager.java @@ -166,9 +166,9 @@ public class TaxiModelLoopManager { }); } - public void stopCalculateRouteInfLoop() { + public void stopCalculateRouteInfoLoop() { if (mCalculateRouteDisposable != null) { - CallerLogger.INSTANCE.i(M_TAXI + TAG, "stopCalculateRouteInfLoop()"); + CallerLogger.INSTANCE.i(M_TAXI + TAG, "stopCalculateRouteInfoLoop()"); mCalculateRouteDisposable.dispose(); mCalculateRouteDisposable = null; }