[6.7.0][HDMap][Overlay] 优化地图marker的处理逻辑;当地图控件从窗口中移除时,断开Java层与Marker之间的引用,规避内存泄露
This commit is contained in:
@@ -234,12 +234,6 @@ public class BusPassengerRouteFragment extends
|
||||
|
||||
@Override
|
||||
public void onDestroyView() {
|
||||
IMoGoOverlayManager overlayManager = CallerMapUIServiceManager.INSTANCE.getOverlayManager();
|
||||
if(overlayManager!=null) {
|
||||
overlayManager.removeAllLines();
|
||||
overlayManager.removeAllPoints();
|
||||
}
|
||||
|
||||
super.onDestroyView();
|
||||
}
|
||||
|
||||
|
||||
@@ -65,10 +65,6 @@ class PM2HPMapFragment :
|
||||
|
||||
override fun onDestroyView() {
|
||||
mapBizView.onDestroy()
|
||||
CallerMapUIServiceManager.getOverlayManager()?.let {
|
||||
it.removeAllLines()
|
||||
it.removeAllPoints()
|
||||
}
|
||||
super.onDestroyView()
|
||||
}
|
||||
|
||||
|
||||
@@ -112,10 +112,6 @@ class DriverM1Fragment : CharterBaseFragment<DriverM1Fragment?, DriverM1Presente
|
||||
if (mPresenter != null) {
|
||||
mPresenter?.onDestroy(this)
|
||||
}
|
||||
CallerMapUIServiceManager.getOverlayManager()?.let {
|
||||
it.removeAllLines()
|
||||
it.removeAllPoints()
|
||||
}
|
||||
super.onDestroyView()
|
||||
}
|
||||
|
||||
|
||||
@@ -266,10 +266,6 @@ class MainFragment : MvpFragment<MainFragment?, BusPassengerPresenter?>(), IMogo
|
||||
override fun onDestroyView() {
|
||||
mapBizView.onDestroy()
|
||||
omvOverMap.onDestroy()
|
||||
CallerMapUIServiceManager.getOverlayManager()?.let {
|
||||
it.removeAllLines()
|
||||
it.removeAllPoints()
|
||||
}
|
||||
MogoMapListenerHandler.mogoMapListenerHandler.unregisterHostMapListener(TAG)
|
||||
EventBus.getDefault().unregister(this)
|
||||
if (mPresenter != null) {
|
||||
|
||||
@@ -89,11 +89,6 @@ public class ShuttleFragment extends BaseShuttleTabFragment<ShuttleFragment, Bus
|
||||
if (mPresenter != null) {
|
||||
mPresenter.onDestroy(this);
|
||||
}
|
||||
IMoGoOverlayManager overlayManager = CallerMapUIServiceManager.INSTANCE.getOverlayManager();
|
||||
if(overlayManager!=null) {
|
||||
overlayManager.removeAllLines();
|
||||
overlayManager.removeAllPoints();
|
||||
}
|
||||
super.onDestroyView();
|
||||
}
|
||||
|
||||
|
||||
@@ -145,11 +145,6 @@ public class BusPassengerRouteFragment extends
|
||||
if (mPresenter != null) {
|
||||
mPresenter.onDestroy(this);
|
||||
}
|
||||
IMoGoOverlayManager overlayManager = CallerMapUIServiceManager.INSTANCE.getOverlayManager();
|
||||
if(overlayManager!=null) {
|
||||
overlayManager.removeAllLines();
|
||||
overlayManager.removeAllPoints();
|
||||
}
|
||||
super.onDestroyView();
|
||||
}
|
||||
|
||||
|
||||
@@ -64,10 +64,6 @@ class PM2HPMapFragment :
|
||||
|
||||
override fun onDestroyView() {
|
||||
mapBizView.onDestroy()
|
||||
CallerMapUIServiceManager.getOverlayManager()?.let {
|
||||
it.removeAllLines()
|
||||
it.removeAllPoints()
|
||||
}
|
||||
super.onDestroyView()
|
||||
}
|
||||
|
||||
|
||||
@@ -145,11 +145,6 @@ public class BusPassengerRouteFragment extends
|
||||
if (mPresenter != null) {
|
||||
mPresenter.onDestroy(this);
|
||||
}
|
||||
IMoGoOverlayManager overlayManager = CallerMapUIServiceManager.INSTANCE.getOverlayManager();
|
||||
if(overlayManager!=null) {
|
||||
overlayManager.removeAllLines();
|
||||
overlayManager.removeAllPoints();
|
||||
}
|
||||
super.onDestroyView();
|
||||
}
|
||||
|
||||
|
||||
@@ -64,10 +64,6 @@ class PM2HPMapFragment :
|
||||
|
||||
override fun onDestroyView() {
|
||||
mapBizView.onDestroy()
|
||||
CallerMapUIServiceManager.getOverlayManager()?.let {
|
||||
it.removeAllLines()
|
||||
it.removeAllPoints()
|
||||
}
|
||||
super.onDestroyView()
|
||||
}
|
||||
|
||||
|
||||
@@ -155,11 +155,6 @@ public class TaxiFragment extends BaseTaxiTabFragment<TaxiFragment, TaxiPresente
|
||||
if (mPresenter != null) {
|
||||
mPresenter.onDestroy(this);
|
||||
}
|
||||
IMoGoOverlayManager overlayManager = CallerMapUIServiceManager.INSTANCE.getOverlayManager();
|
||||
if(overlayManager!=null) {
|
||||
overlayManager.removeAllLines();
|
||||
overlayManager.removeAllPoints();
|
||||
}
|
||||
super.onDestroyView();
|
||||
}
|
||||
|
||||
|
||||
@@ -229,10 +229,6 @@ class TaxiPassengerBaseFragment() :
|
||||
if (mPresenter != null) {
|
||||
mPresenter?.onDestroy(this)
|
||||
}
|
||||
CallerMapUIServiceManager.getOverlayManager()?.let {
|
||||
it.removeAllLines()
|
||||
it.removeAllPoints()
|
||||
}
|
||||
super.onDestroyView()
|
||||
}
|
||||
|
||||
|
||||
@@ -182,10 +182,6 @@ class TaxiFragment :MvpFragment<TaxiFragment?, TaxiPresenter?>(),
|
||||
if (mPresenter != null) {
|
||||
mPresenter?.onDestroy(this)
|
||||
}
|
||||
CallerMapUIServiceManager.getOverlayManager()?.let {
|
||||
it.removeAllLines()
|
||||
it.removeAllPoints()
|
||||
}
|
||||
CallerEagleBaseFunctionCall4OchManager.removeToolkitByTag(mutableListOf(lineView))
|
||||
CallerEagleBaseFunctionCall4OchManager.removeToolKitDefaultItemClickListener(lineView)
|
||||
startAutopilotAnimationView.cancelCountdown()
|
||||
|
||||
@@ -245,10 +245,6 @@ class TaxiPassengerBaseFragment() :
|
||||
override fun onDestroyView() {
|
||||
mapBizView!!.onDestroy()
|
||||
overMapView?.onDestroy()
|
||||
CallerMapUIServiceManager.getOverlayManager()?.let {
|
||||
it.removeAllLines()
|
||||
it.removeAllPoints()
|
||||
}
|
||||
super.onDestroyView()
|
||||
}
|
||||
|
||||
|
||||
@@ -138,10 +138,6 @@ class MapBizView(context: Context?, attrs: AttributeSet?) : MogoMapView(context,
|
||||
// 先取消注册数据,再onDestroy
|
||||
CallerChassisLocationWGS84ListenerManager.removeListener(TAG)
|
||||
CallerChassisStatesListenerManager.removeListener(TAG)
|
||||
CallerMapUIServiceManager.getOverlayManager()?.let {
|
||||
it.removeAllLines()
|
||||
it.removeAllPoints()
|
||||
}
|
||||
super.onDestroy()
|
||||
}
|
||||
|
||||
|
||||
@@ -77,4 +77,6 @@ interface IMoGoOverlayManager {
|
||||
fun hideAllPointsExceptOwners(vararg owners: String)
|
||||
|
||||
fun updateAnimPoint(options: Point.Options, mapTag:String = DEFAULT)
|
||||
|
||||
fun clear()
|
||||
}
|
||||
@@ -4,6 +4,7 @@ import android.content.Context
|
||||
import android.util.AttributeSet
|
||||
import com.mogo.eagle.core.data.config.HdMapBuildConfig
|
||||
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.zhidaoauto.map.sdk.inner.abs.IMapController
|
||||
import com.zhidaoauto.map.sdk.inner.abs.IMarkerController
|
||||
@@ -37,4 +38,16 @@ class MoGoAutoView: MapAutoView {
|
||||
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()
|
||||
}
|
||||
}
|
||||
@@ -458,4 +458,13 @@ internal class MoGoOverlayManagerImpl: IMoGoOverlayManager {
|
||||
override fun updateAnimPoint(options: Options, mapTag:String) {
|
||||
mapInstance.getMogoMap(mapTag)?.addAnimPoint(options)
|
||||
}
|
||||
|
||||
override fun clear() {
|
||||
synchronized(points) {
|
||||
points.clear()
|
||||
}
|
||||
synchronized(lines) {
|
||||
lines.clear()
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user