Actividad de filtraciones de MapView (sin servicio de ubicación)

Estoy utilizando los servicios de reproducción v9.8.0 ( sin permisos de servicio de ubicación ) y todavía estoy frente a una fuga cuando uso un MapView en un fragmento de diálogo. Lo estoy usando como en mi ejemplo del código y lo uso para exhibir una localización solamente y NO tengo setMyLocationEnabled (como no tengo incluso los permisos para esta configuración).

¿Alguien ve un problema en mi código? Estoy obteniendo una fuga como la de aquí: MapView v2 manteniendo el contexto alrededor . Hago lo siguiente:

  • Crear un diálogo
  • Reemplazar una vista en mi diseño con un MapView (porque permito usar mapas estáticos también, así que mi vista predeterminada es un ImageView en mi diseño, que será reemplazado por un MapView )

Entonces sucede que mis fragmentos se escapa MapView.mContext

Código – Fragmento de diálogo

 public class DialogMediaDetails extends DialogFragment { private GoogleMap mGoogleMap = null; private MapView mMapView = null; @Override public final Dialog onCreateDialog(Bundle savedInstanceState) { Dialog dlg = ...; // create dialog View view = ...; // get view from dialog Location location = ...; // defined location initGoogleMap(); return dlg; } private void initGoogleMap(Location location) { mMapView = new MapView(getActivity()); MapsInitializer.initialize(getActivity()); // Updates the location and zoom of the MapView mMapView.onCreate(null); mMapView.getMapAsync(new OnMapReadyCallback() { @Override public void onMapReady(GoogleMap googleMap) { LatLng coordinates = new LatLng(location.getLatitude(), location.getLongitude()); googleMap.addMarker(new MarkerOptions().position(coordinates)); googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(coordinates, 15)); mGoogleMap = googleMap; mMapView.onResume(); } }); mMapView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { mMapView.getViewTreeObserver().removeOnGlobalLayoutListener(this); // MapView is scrollable, so we disable dragging CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) appBarLayout.getLayoutParams(); AppBarLayout.Behavior behavior = (AppBarLayout.Behavior) params.getBehavior(); behavior.setDragCallback(new AppBarLayout.Behavior.DragCallback() { @Override public boolean canDrag(AppBarLayout appBarLayout) { return false; } }); } }); replaceHeader(mMapView); } private void replaceHeader(View view) { ViewGroup parent = (ViewGroup) pbHeader.getParent(); int index = parent.indexOfChild(pbHeader); ViewGroup.LayoutParams lp = pbHeader.getLayoutParams(); parent.removeView(pbHeader); parent.addView(view, index, lp); } // ---------------------------------------- // forward all lifecycle events to MapView // ---------------------------------------- @Override public void onResume() { super.onResume(); if (mMapView != null) mMapView.onResume(); } @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); if (mMapView != null) mMapView.onSaveInstanceState(outState); } @Override public void onPause() { super.onPause(); if (mMapView != null) mMapView.onPause(); } @Override public void onLowMemory() { super.onLowMemory(); if (mMapView != null) mMapView.onLowMemory(); } @Override public void onDestroy() { super.onDestroy(); if (mMapView != null) mMapView.onDestroy(); mMapView = null; } } 

Hay algunos problemas informados sobre fugas con MapView. Puedes intentar llamar a googleMap.setMyLocationEnabled(false); En onDestroy para evitar que se produzca la fuga. Si no se llama a MapView.onDestroy o GoogleMap.setMyLocationEnabled(false) se producirá una fuga. Aquí hay un hilo relacionado que podría ayudar.

Tuve el mismo problema y me di cuenta en mi árbol de referencia de montón que el error procedía de la parte del modo lite de la biblioteca. Intente no usar el modo lite y agregar todos los ciclos de vida correspondientes para mapview.

  • No se puede importar com.google.android.maps.MapActivity
  • Dibujar objeto / imagen sobre lienzo
  • ¿Cómo mostrar un globo sobre un marcador en una MapActivity? ¿No hay un widget?
  • Npm WARN [email protected] requiere un par de react @> = 15.4.0 pero no se ha instalado ninguno
  • La clase de dirección getCountryCode () devuelve dígitos
  • Android PlacePicker se cierra 2 segundos después del lanzamiento
  • ViewPager con la API de Google Maps v2: vista negra misteriosa
  • ¿Cómo obtener la ubicación actual de GPS (latitud-longitud) con la API de Google en la aplicación de Android?
  • Android: automáticamente elige debug / release Maps v2 api key?
  • Android, dibujar ruta en el mapa de google
  • Android Studio: ¿Por qué estoy recibiendo un error multi dex en el nuevo proyecto API de Google Maps?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.