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:
- Google Maps V2 muestra pantalla en blanco en Android 2.2
- Cómo utilizar el API AutocompleteFilter de Android Places
- TextView no se muestra en la parte superior del mapa de Google
- Android - API de Google Maps v2 - Errores de SupportMapFragment
- La importación com.google.android.gms no se puede resolver
- 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 unImageView
en mi diseño, que será reemplazado por unMapView
)
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; } }
- Actualizar continuamente el marcador cuando cambia la ubicación en Android
- Android - Cómo lanzar la intención del mapa de Google en la aplicación android con cierta ubicación, nivel de zoom y marcador
- Mostrar el número total como texto para múltiples pines con un pin en la misma ubicación en el mapa en android
- ¿Qué tan bien se integra la API de Bing Maps con la aplicación de Android?
- Cambiar o quitar completamente el color de resaltado de un InfoWindow de Google Maps v2 en Android
- Cómo dibujar un triángulo lleno en lienzo android?
- null array error en la aplicación de google maps V2 android
- Establecer programaticamente la visibilidad de fragmento de mapa google (API2)
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.
- Custom DatePicker as Preference no guarda valor cuando el usuario edita el valor en el campo
- MoPub problema de importación, sé que estoy sólo falta algo estúpido