|
|
@@ -4,8 +4,6 @@ import android.app.Activity;
|
|
|
import android.content.Context;
|
|
|
import android.os.Bundle;
|
|
|
import android.view.View;
|
|
|
-import android.view.ViewGroup;
|
|
|
-import android.widget.FrameLayout;
|
|
|
|
|
|
import androidx.annotation.NonNull;
|
|
|
import androidx.annotation.Nullable;
|
|
|
@@ -15,15 +13,14 @@ import androidx.lifecycle.LifecycleOwner;
|
|
|
import com.amap.api.maps.AMap;
|
|
|
import com.amap.api.maps.CameraUpdateFactory;
|
|
|
import com.amap.api.maps.MapView;
|
|
|
-import com.amap.api.maps.TextureMapView;
|
|
|
import com.atmob.map_amap_android.contants.Constants;
|
|
|
import com.atmob.map_amap_android.overlays.MyMethodCallHandler;
|
|
|
import com.atmob.map_amap_android.overlays.marker.MarkersController;
|
|
|
import com.atmob.map_amap_android.overlays.polyline.PolylineController;
|
|
|
import com.atmob.map_amap_android.util.LogUtil;
|
|
|
|
|
|
-import java.util.Map;
|
|
|
import java.util.HashMap;
|
|
|
+import java.util.Map;
|
|
|
import java.util.Objects;
|
|
|
|
|
|
import io.flutter.embedding.engine.plugins.activity.ActivityPluginBinding;
|
|
|
@@ -38,7 +35,6 @@ public class AmapView implements PlatformView, DefaultLifecycleObserver, MethodC
|
|
|
|
|
|
private static final int DEFAULT_MAP_ZOOM_SCALE = 18;
|
|
|
|
|
|
-
|
|
|
private final MethodChannel channel;
|
|
|
|
|
|
private MapView mapView = null;
|
|
|
@@ -55,6 +51,7 @@ public class AmapView implements PlatformView, DefaultLifecycleObserver, MethodC
|
|
|
|
|
|
private final int viewId;
|
|
|
|
|
|
+ private Bundle bundle;
|
|
|
|
|
|
public AmapView(Context context, Activity activity, BinaryMessenger messenger, int viewId, Map<String, Object> args, LifecycleOwner lifecycleProvider) {
|
|
|
this.viewId = viewId;
|
|
|
@@ -62,8 +59,22 @@ public class AmapView implements PlatformView, DefaultLifecycleObserver, MethodC
|
|
|
channel.setMethodCallHandler(this);
|
|
|
myMethodCallHandlerMap = new HashMap<>(8);
|
|
|
|
|
|
+ LogUtil.i(TAG, "AmapView() ==> viewId: " + viewId + ", hash: " + this.hashCode());
|
|
|
+
|
|
|
try {
|
|
|
mapView = new MapView(context);
|
|
|
+ mapView.addOnAttachStateChangeListener(new View.OnAttachStateChangeListener() {
|
|
|
+ @Override
|
|
|
+ public void onViewAttachedToWindow(@NonNull View v) {
|
|
|
+ LogUtil.i(TAG, "onViewAttachedToWindow() ==> viewId: " + viewId + ", disposed: " + disposed);
|
|
|
+ v.invalidate();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onViewDetachedFromWindow(@NonNull View v) {
|
|
|
+ LogUtil.i(TAG, "onViewDetachedFromWindow() ==> viewId: " + viewId + ", disposed: " + disposed);
|
|
|
+ }
|
|
|
+ });
|
|
|
AMap amap = mapView.getMap();
|
|
|
initMapDefaultSetting(amap);
|
|
|
mapController = new MapController(context, channel, amap);
|
|
|
@@ -78,7 +89,6 @@ public class AmapView implements PlatformView, DefaultLifecycleObserver, MethodC
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-
|
|
|
private void initMyMethodCallHandlerMap() {
|
|
|
String[] methodIdArray = markersController.getRegisterMethodIdArray();
|
|
|
if (null != methodIdArray) {
|
|
|
@@ -102,7 +112,6 @@ public class AmapView implements PlatformView, DefaultLifecycleObserver, MethodC
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-
|
|
|
private void initMapDefaultSetting(AMap map) {
|
|
|
if (map == null) {
|
|
|
return;
|
|
|
@@ -112,17 +121,16 @@ public class AmapView implements PlatformView, DefaultLifecycleObserver, MethodC
|
|
|
map.moveCamera(CameraUpdateFactory.zoomTo(DEFAULT_MAP_ZOOM_SCALE));
|
|
|
}
|
|
|
|
|
|
-
|
|
|
@Nullable
|
|
|
@Override
|
|
|
public View getView() {
|
|
|
+ LogUtil.i(TAG, "getView() ==> viewId: " + viewId + ", disposed: " + disposed);
|
|
|
return mapView;
|
|
|
}
|
|
|
|
|
|
-
|
|
|
@Override
|
|
|
public void dispose() {
|
|
|
- LogUtil.i(TAG, "dispose==>" + viewId);
|
|
|
+ LogUtil.i(TAG, "dispose() ==> viewId: " + viewId + ", disposed: " + disposed);
|
|
|
try {
|
|
|
if (disposed) {
|
|
|
return;
|
|
|
@@ -135,7 +143,6 @@ public class AmapView implements PlatformView, DefaultLifecycleObserver, MethodC
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-
|
|
|
@Override
|
|
|
public void onMethodCall(@NonNull MethodCall call, @NonNull MethodChannel.Result result) {
|
|
|
LogUtil.i(TAG, "onMethodCall==>" + call.method + ", arguments==> " + call.arguments);
|
|
|
@@ -154,16 +161,15 @@ public class AmapView implements PlatformView, DefaultLifecycleObserver, MethodC
|
|
|
|
|
|
}
|
|
|
|
|
|
-
|
|
|
@Override
|
|
|
public void onCreate(@NonNull LifecycleOwner owner) {
|
|
|
- LogUtil.i(TAG, "onCreate==>" + viewId);
|
|
|
+ LogUtil.i(TAG, "onCreate() ==> viewId: " + viewId + ", disposed: " + disposed);
|
|
|
try {
|
|
|
if (disposed) {
|
|
|
return;
|
|
|
}
|
|
|
if (null != mapView) {
|
|
|
- mapView.onCreate(null);
|
|
|
+ mapView.onCreate(bundle);
|
|
|
}
|
|
|
} catch (Throwable e) {
|
|
|
LogUtil.e(TAG, "onCreate", e);
|
|
|
@@ -172,13 +178,12 @@ public class AmapView implements PlatformView, DefaultLifecycleObserver, MethodC
|
|
|
|
|
|
@Override
|
|
|
public void onStart(@NonNull LifecycleOwner owner) {
|
|
|
- LogUtil.i(TAG, "onStart==>" + viewId);
|
|
|
+ LogUtil.i(TAG, "onStart() ==> viewId: " + viewId + ", disposed: " + disposed);
|
|
|
}
|
|
|
|
|
|
-
|
|
|
@Override
|
|
|
public void onResume(@NonNull LifecycleOwner owner) {
|
|
|
- LogUtil.i(TAG, "onResume==>" + viewId);
|
|
|
+ LogUtil.i(TAG, "onResume() ==> viewId: " + viewId + ", disposed: " + disposed);
|
|
|
try {
|
|
|
if (disposed) {
|
|
|
return;
|
|
|
@@ -193,7 +198,7 @@ public class AmapView implements PlatformView, DefaultLifecycleObserver, MethodC
|
|
|
|
|
|
@Override
|
|
|
public void onPause(@NonNull LifecycleOwner owner) {
|
|
|
- LogUtil.i(TAG, "onPause==>" + viewId);
|
|
|
+ LogUtil.i(TAG, "onPause() ==> viewId: " + viewId + ", disposed: " + disposed);
|
|
|
try {
|
|
|
if (disposed) {
|
|
|
return;
|
|
|
@@ -206,12 +211,12 @@ public class AmapView implements PlatformView, DefaultLifecycleObserver, MethodC
|
|
|
|
|
|
@Override
|
|
|
public void onStop(@NonNull LifecycleOwner owner) {
|
|
|
- LogUtil.i(TAG, "onStop==>" + viewId);
|
|
|
+ LogUtil.i(TAG, "onStop() ==> viewId: " + viewId + ", disposed: " + disposed);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public void onDestroy(@NonNull LifecycleOwner owner) {
|
|
|
- LogUtil.i(TAG, "onDestroy==>" + viewId);
|
|
|
+ LogUtil.i(TAG, "onDestroy() ==> viewId: " + viewId + ", disposed: " + disposed);
|
|
|
try {
|
|
|
if (disposed) {
|
|
|
return;
|
|
|
@@ -224,7 +229,7 @@ public class AmapView implements PlatformView, DefaultLifecycleObserver, MethodC
|
|
|
|
|
|
@Override
|
|
|
public void onSaveInstanceState(@NonNull Bundle bundle) {
|
|
|
- LogUtil.i(TAG, "onSaveInstanceState==>" + viewId);
|
|
|
+ LogUtil.i(TAG, "onSaveInstanceState() ==> viewId: " + viewId + ", disposed: " + disposed);
|
|
|
try {
|
|
|
if (disposed) {
|
|
|
return;
|
|
|
@@ -237,15 +242,8 @@ public class AmapView implements PlatformView, DefaultLifecycleObserver, MethodC
|
|
|
|
|
|
@Override
|
|
|
public void onRestoreInstanceState(@Nullable Bundle bundle) {
|
|
|
- LogUtil.i(TAG, "onRestoreInstanceState==>" + viewId);
|
|
|
- try {
|
|
|
- if (disposed) {
|
|
|
- return;
|
|
|
- }
|
|
|
- mapView.onCreate(bundle);
|
|
|
- } catch (Throwable e) {
|
|
|
- LogUtil.e(TAG, "onRestoreInstanceState", e);
|
|
|
- }
|
|
|
+ this.bundle = bundle;
|
|
|
+ LogUtil.i(TAG, "onRestoreInstanceState() ==> viewId: " + viewId + ", disposed: " + disposed);
|
|
|
}
|
|
|
|
|
|
private void destroyMapViewIfNecessary() {
|