[6.7.0][HDMap][Overlay] 优化地图marker的处理逻辑;当地图控件从窗口中移除时,断开Java层与Marker之间的引用,规避内存泄露

This commit is contained in:
renwj
2024-10-29 22:29:39 +08:00
parent 3e41bb5fa0
commit 540763df8f
17 changed files with 24 additions and 62 deletions

View File

@@ -234,12 +234,6 @@ public class BusPassengerRouteFragment extends
@Override @Override
public void onDestroyView() { public void onDestroyView() {
IMoGoOverlayManager overlayManager = CallerMapUIServiceManager.INSTANCE.getOverlayManager();
if(overlayManager!=null) {
overlayManager.removeAllLines();
overlayManager.removeAllPoints();
}
super.onDestroyView(); super.onDestroyView();
} }

View File

@@ -65,10 +65,6 @@ class PM2HPMapFragment :
override fun onDestroyView() { override fun onDestroyView() {
mapBizView.onDestroy() mapBizView.onDestroy()
CallerMapUIServiceManager.getOverlayManager()?.let {
it.removeAllLines()
it.removeAllPoints()
}
super.onDestroyView() super.onDestroyView()
} }

View File

@@ -112,10 +112,6 @@ class DriverM1Fragment : CharterBaseFragment<DriverM1Fragment?, DriverM1Presente
if (mPresenter != null) { if (mPresenter != null) {
mPresenter?.onDestroy(this) mPresenter?.onDestroy(this)
} }
CallerMapUIServiceManager.getOverlayManager()?.let {
it.removeAllLines()
it.removeAllPoints()
}
super.onDestroyView() super.onDestroyView()
} }

View File

@@ -266,10 +266,6 @@ class MainFragment : MvpFragment<MainFragment?, BusPassengerPresenter?>(), IMogo
override fun onDestroyView() { override fun onDestroyView() {
mapBizView.onDestroy() mapBizView.onDestroy()
omvOverMap.onDestroy() omvOverMap.onDestroy()
CallerMapUIServiceManager.getOverlayManager()?.let {
it.removeAllLines()
it.removeAllPoints()
}
MogoMapListenerHandler.mogoMapListenerHandler.unregisterHostMapListener(TAG) MogoMapListenerHandler.mogoMapListenerHandler.unregisterHostMapListener(TAG)
EventBus.getDefault().unregister(this) EventBus.getDefault().unregister(this)
if (mPresenter != null) { if (mPresenter != null) {

View File

@@ -89,11 +89,6 @@ public class ShuttleFragment extends BaseShuttleTabFragment<ShuttleFragment, Bus
if (mPresenter != null) { if (mPresenter != null) {
mPresenter.onDestroy(this); mPresenter.onDestroy(this);
} }
IMoGoOverlayManager overlayManager = CallerMapUIServiceManager.INSTANCE.getOverlayManager();
if(overlayManager!=null) {
overlayManager.removeAllLines();
overlayManager.removeAllPoints();
}
super.onDestroyView(); super.onDestroyView();
} }

View File

@@ -145,11 +145,6 @@ public class BusPassengerRouteFragment extends
if (mPresenter != null) { if (mPresenter != null) {
mPresenter.onDestroy(this); mPresenter.onDestroy(this);
} }
IMoGoOverlayManager overlayManager = CallerMapUIServiceManager.INSTANCE.getOverlayManager();
if(overlayManager!=null) {
overlayManager.removeAllLines();
overlayManager.removeAllPoints();
}
super.onDestroyView(); super.onDestroyView();
} }

View File

@@ -64,10 +64,6 @@ class PM2HPMapFragment :
override fun onDestroyView() { override fun onDestroyView() {
mapBizView.onDestroy() mapBizView.onDestroy()
CallerMapUIServiceManager.getOverlayManager()?.let {
it.removeAllLines()
it.removeAllPoints()
}
super.onDestroyView() super.onDestroyView()
} }

View File

@@ -145,11 +145,6 @@ public class BusPassengerRouteFragment extends
if (mPresenter != null) { if (mPresenter != null) {
mPresenter.onDestroy(this); mPresenter.onDestroy(this);
} }
IMoGoOverlayManager overlayManager = CallerMapUIServiceManager.INSTANCE.getOverlayManager();
if(overlayManager!=null) {
overlayManager.removeAllLines();
overlayManager.removeAllPoints();
}
super.onDestroyView(); super.onDestroyView();
} }

View File

@@ -64,10 +64,6 @@ class PM2HPMapFragment :
override fun onDestroyView() { override fun onDestroyView() {
mapBizView.onDestroy() mapBizView.onDestroy()
CallerMapUIServiceManager.getOverlayManager()?.let {
it.removeAllLines()
it.removeAllPoints()
}
super.onDestroyView() super.onDestroyView()
} }

View File

@@ -155,11 +155,6 @@ public class TaxiFragment extends BaseTaxiTabFragment<TaxiFragment, TaxiPresente
if (mPresenter != null) { if (mPresenter != null) {
mPresenter.onDestroy(this); mPresenter.onDestroy(this);
} }
IMoGoOverlayManager overlayManager = CallerMapUIServiceManager.INSTANCE.getOverlayManager();
if(overlayManager!=null) {
overlayManager.removeAllLines();
overlayManager.removeAllPoints();
}
super.onDestroyView(); super.onDestroyView();
} }

View File

@@ -229,10 +229,6 @@ class TaxiPassengerBaseFragment() :
if (mPresenter != null) { if (mPresenter != null) {
mPresenter?.onDestroy(this) mPresenter?.onDestroy(this)
} }
CallerMapUIServiceManager.getOverlayManager()?.let {
it.removeAllLines()
it.removeAllPoints()
}
super.onDestroyView() super.onDestroyView()
} }

View File

@@ -182,10 +182,6 @@ class TaxiFragment :MvpFragment<TaxiFragment?, TaxiPresenter?>(),
if (mPresenter != null) { if (mPresenter != null) {
mPresenter?.onDestroy(this) mPresenter?.onDestroy(this)
} }
CallerMapUIServiceManager.getOverlayManager()?.let {
it.removeAllLines()
it.removeAllPoints()
}
CallerEagleBaseFunctionCall4OchManager.removeToolkitByTag(mutableListOf(lineView)) CallerEagleBaseFunctionCall4OchManager.removeToolkitByTag(mutableListOf(lineView))
CallerEagleBaseFunctionCall4OchManager.removeToolKitDefaultItemClickListener(lineView) CallerEagleBaseFunctionCall4OchManager.removeToolKitDefaultItemClickListener(lineView)
startAutopilotAnimationView.cancelCountdown() startAutopilotAnimationView.cancelCountdown()

View File

@@ -245,10 +245,6 @@ class TaxiPassengerBaseFragment() :
override fun onDestroyView() { override fun onDestroyView() {
mapBizView!!.onDestroy() mapBizView!!.onDestroy()
overMapView?.onDestroy() overMapView?.onDestroy()
CallerMapUIServiceManager.getOverlayManager()?.let {
it.removeAllLines()
it.removeAllPoints()
}
super.onDestroyView() super.onDestroyView()
} }

View File

@@ -138,10 +138,6 @@ class MapBizView(context: Context?, attrs: AttributeSet?) : MogoMapView(context,
// 先取消注册数据再onDestroy // 先取消注册数据再onDestroy
CallerChassisLocationWGS84ListenerManager.removeListener(TAG) CallerChassisLocationWGS84ListenerManager.removeListener(TAG)
CallerChassisStatesListenerManager.removeListener(TAG) CallerChassisStatesListenerManager.removeListener(TAG)
CallerMapUIServiceManager.getOverlayManager()?.let {
it.removeAllLines()
it.removeAllPoints()
}
super.onDestroy() super.onDestroy()
} }

View File

@@ -77,4 +77,6 @@ interface IMoGoOverlayManager {
fun hideAllPointsExceptOwners(vararg owners: String) fun hideAllPointsExceptOwners(vararg owners: String)
fun updateAnimPoint(options: Point.Options, mapTag:String = DEFAULT) fun updateAnimPoint(options: Point.Options, mapTag:String = DEFAULT)
fun clear()
} }

View File

@@ -4,6 +4,7 @@ import android.content.Context
import android.util.AttributeSet import android.util.AttributeSet
import com.mogo.eagle.core.data.config.HdMapBuildConfig import com.mogo.eagle.core.data.config.HdMapBuildConfig
import com.mogo.eagle.core.data.enums.Carmodel.T2 import com.mogo.eagle.core.data.enums.Carmodel.T2
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager
import com.mogo.eagle.core.utilcode.mogo.logger.Logger import com.mogo.eagle.core.utilcode.mogo.logger.Logger
import com.zhidaoauto.map.sdk.inner.abs.IMapController import com.zhidaoauto.map.sdk.inner.abs.IMapController
import com.zhidaoauto.map.sdk.inner.abs.IMarkerController import com.zhidaoauto.map.sdk.inner.abs.IMarkerController
@@ -37,4 +38,16 @@ class MoGoAutoView: MapAutoView {
return controller.addSelfCar(markerOptions) return controller.addSelfCar(markerOptions)
} }
} }
override fun onAttachedToWindow() {
super.onAttachedToWindow()
Logger.d(TAG, "-- onAttachedToWindow --")
CallerMapUIServiceManager.getOverlayManager()?.clear()
}
override fun onDetachedFromWindow() {
super.onDetachedFromWindow()
Logger.d(TAG, "-- onDetachedFromWindow --")
CallerMapUIServiceManager.getOverlayManager()?.clear()
}
} }

View File

@@ -458,4 +458,13 @@ internal class MoGoOverlayManagerImpl: IMoGoOverlayManager {
override fun updateAnimPoint(options: Options, mapTag:String) { override fun updateAnimPoint(options: Options, mapTag:String) {
mapInstance.getMogoMap(mapTag)?.addAnimPoint(options) mapInstance.getMogoMap(mapTag)?.addAnimPoint(options)
} }
override fun clear() {
synchronized(points) {
points.clear()
}
synchronized(lines) {
lines.clear()
}
}
} }