24 votos

¿Hay alguna forma de desactivar permanentemente Google Maps hasta que sea necesario?

Los mapas de Google parecen tener una cantidad insana de intentos registrados para ello, así como otras formas de iniciarse.

Dado que se trata de una aplicación que consume bastantes recursos (sobre todo de memoria), me gustaría mucho que permanentemente no se ejecuta a menos que / hasta que realmente lo necesito. Sin embargo, Android sigue iniciándolo todo el tiempo, por ejemplo, cuando cambia el estado de la conectividad (lo que para mí ocurre con bastante frecuencia en interiores), o cambia la ubicación del GPS/de la red.

¿Hay alguna forma de asegurar que Google Maps no inicie NINGÚN proceso, garantizado, hasta que haga clic en un icono para iniciarlo deliberadamente?

Medio ambiente : Droid X, ejecutando Froyo 2.2 rooteado; tengo Autostarts . y Advanced Task Killer, así como la versión Pro de Titanium Backup instalada.

Estoy bastante abierto a casi cualquier método siempre que

  • Es fiable.

  • Me permite utilizar Google Maps con el 100% de las funcionalidades previstas una vez que lo necesito, sin requerir 5 minutos de trabajo para reconfigurar.

  • Lo ideal sería que no tuviera que reiniciar para usarlo, pero esto no es un problema.

  • Preferiría encarecidamente un método genérico que fuera aplicable a otras aplicaciones, no sólo a Google Maps.

  • Soy un desarrollador de software con una fuerte dosis de experiencia en administración de sistemas Unix/Linux. En otras palabras, las soluciones que requieran el uso de shell o la escritura/ejecución de scripts de shell (o Perl en el entorno de scripting de Android) son muy bienvenidas.

    Las soluciones que implican escribir mi propia aplicación Java para Android son aceptables siempre y cuando sean lo suficientemente detalladas como para que un novato total en el desarrollo de Android pueda hacer al menos algo de trabajo sin estar 100% perdido.

Cosas que probé:

  • Matar los procesos a través de Task Killer NO funciona - vuelven a aparecer, ya sea inmediatamente o en un rato. Probablemente a través de Intents pero no estoy 100% seguro.

  • Métodos estándar para deshacerse de los problemas de GMaps (cerrar la sesión de Latitude/apagar el GPS y el localizador de red). Esto parece ayudar mucho PERO encuentro que la necesidad de apagar permanentemente el GPS/localizador es inaceptable - por ejemplo, no me permite ejecutar la aplicación Locale o cosas de Tasker basadas en la localización.

  • Congelar a través de Titanium Backup Pro. Esto requiere un reinicio y generalmente no es muy agradable.

Posibles enfoques en los que he pensado (pero no saben cómo hacerlo) son:

  • De alguna manera eliminar completamente (apagar) todos los Intentos registrados por Google Maps cuando no se necesitan.

    Problemas: En primer lugar, no sé cuáles son TODOS los intentos que utiliza Google Maps.

    En segundo lugar, la única forma práctica de hacerlo que conozco es la aplicación Autostarts, que NO es una solución viable: se tarda entre 5 y 10 minutos en encontrar y volver a activar todos los intentos Soy consciente de (Autostarts es realmente pobre en la gestión de intentos por aplicación - está centrado en cada uno de ellos), sin contar con los posibles intentos de los que Autostarts NO tiene conocimiento (es una caja negra, no sé qué intentos se pierden, si es que hay alguno.

  • Tener un script que cambie el nombre de los JARs o lo que sean los archivos ejecutables en Android (¿enteros .APK?) de digamos GoogleMaps.apk a GoogleMaps.disabled.apk y de vuelta.

    Problema: No sé si esto es posible hacer en un Froyo rooteado. Además, Google Maps fue preinstalado en DroidX, por lo que el cambio de nombre de alguna manera sólo afectan a la actualización, pero no la aplicación original?

  • Tener un script que irá al APK y renombrará/moverá/vaciará el archivo de manifiesto para eliminar cualquier intención de esa aplicación.

    Problema: ¿Esto requeriría una recompilación? Definitivamente requiere un reinicio, lo cual es una desventaja.

16voto

mercutio Puntos 5828

Primero, Te sugiero que dejes de usar tus asesinos de tareas . Están drenando su batería más que ahorrarla. El sistema está reiniciando los servicios cuando necesitan ejecutarse, lo que está causando el uso de la batería.

En segundo lugar, estás asumiendo que liberar memoria es algo bueno. No lo es. Liberar memoria no va a disminuir el uso de la batería. Lo que realmente tienes que buscar son las aplicaciones que utilizan muchos ciclos de CPU. Esto es lo que va a drenar su batería.

Android se basa en Linux. Linux siempre quiere utilizar toda la memoria disponible porque la memoria libre es memoria desperdiciada. El sistema Android se encargará de liberar la memoria de las aplicaciones que no estén en uso para que otras aplicaciones puedan utilizarla cuando la necesiten.

Incluso si intentas matar las aplicaciones que se están ejecutando y ocupando memoria, el sistema reiniciará estos servicios/aplicaciones, lo que causará el agotamiento de la batería porque probablemente tienen alguna sincronización que ocurre al arrancar, o simplemente los ciclos de la CPU que se utilizan para inicializar la aplicación. Matar las aplicaciones también causará que el dispositivo parezca lento cuando intente iniciar aplicaciones porque algo que normalmente podría estar ejecutándose ahora necesita ser iniciado de nuevo antes de presentarle la interfaz de usuario de las aplicaciones.

Algunas cosas que causan el agotamiento de la batería como el GPS, el wifi, el bluetooth y el uso de datos van a utilizar su CPU mucho más para procesar los datos que se transmiten y reciben. Desactivar estos elementos cuando no se utilicen ahorrará mucha batería. Tengo una mala batería en mi dispositivo, ni siquiera se carga más allá del 94%, pero puedo obtener 12 o más horas de mi batería si apago estos servicios cuando no los necesito.

Yo uso Google Maps todo el tiempo, y en mis estadísticas de batería ni siquiera aparece como una aplicación que utiliza recursos. Mi usuario más alto de la batería es la pantalla @ 31%, y el más bajo que se muestra es GMail @ 3%. Te aseguro que Google Maps no es la causa de la descarga de la batería. El uso de task killers es más probable que sea la causa. Como he dicho, yo uso google maps para las direcciones casi a diario, y ni siquiera está en la lista de las 10 primeras aplicaciones que están utilizando mi batería.

Más información sobre los asesinos de tareas de la Blog de Google para desarrolladores de Android .

Un malentendido común sobre la multitarea en Android es la diferencia entre un proceso y una aplicación. En Android no son entidades estrechamente acopladas: las aplicaciones pueden parecer presentes para el usuario sin un proceso real que ejecute la aplicación; múltiples aplicaciones pueden compartir procesos, o una aplicación puede hacer uso de múltiples procesos dependiendo de sus necesidades; el proceso(s) de una aplicación puede ser mantenido por Android incluso cuando esa aplicación no está haciendo algo activamente.

El hecho de que pueda ver el proceso de una aplicación "en ejecución" no significa que la aplicación se esté ejecutando o haciendo algo. Simplemente puede estar ahí porque Android la ha necesitado en algún momento, y ha decidido que lo mejor es mantenerla cerca por si la vuelve a necesitar. Del mismo modo, es posible que dejes una aplicación por un tiempo y vuelvas a ella desde donde la dejaste, y durante ese tiempo Android puede haber necesitado deshacerse del proceso para otras cosas.

Una de las claves de cómo Android maneja las aplicaciones de esta manera es que los procesos no se cierran limpiamente. Cuando el usuario abandona una aplicación, su proceso se mantiene en segundo plano, lo que le permite seguir trabajando (por ejemplo, descargando páginas web) si es necesario, y pasar inmediatamente a primer plano si el usuario vuelve a ella. Si un dispositivo nunca se queda sin memoria, entonces Android mantendrá todos estos procesos alrededor, dejando realmente todas las aplicaciones "funcionando" todo el tiempo.

Por supuesto, hay una cantidad limitada de memoria, y para acomodar esto Android debe decidir cuándo deshacerse de los procesos que no son necesarios. Esto nos lleva al ciclo de vida de los procesos de Android, las reglas que utiliza para decidir lo importante que es cada proceso y, por tanto, el siguiente que debe abandonarse. Estas reglas se basan tanto en la importancia de un proceso para la experiencia actual del usuario, como en el tiempo que ha pasado desde que el proceso fue necesitado por última vez por el usuario.

Una vez que Android determina que necesita eliminar un proceso, lo hace brutalmente, simplemente forzando su muerte. El kernel puede entonces reclamar inmediatamente todos los recursos que necesita el proceso, sin depender de que esa aplicación esté bien escrita y responda a una petición educada de salida. Permitir que el núcleo recupere inmediatamente los recursos de la aplicación hace que sea mucho más fácil evitar situaciones graves de falta de memoria.

Si un usuario vuelve más tarde a una aplicación que ha sido eliminada, Android necesita una forma de relanzarla en el mismo estado en el que fue vista por última vez, para preservar la experiencia de "todas las aplicaciones están funcionando todo el tiempo". Esto se hace manteniendo un registro de las partes de la aplicación que el usuario conoce (las Actividades), y reiniciándolas con información sobre el último estado en el que fueron vistas. Este último estado se genera cada vez que el usuario abandona esa parte de la aplicación, no cuando se mata, de modo que el núcleo puede posteriormente matarla libremente sin depender de que la aplicación responda correctamente en ese momento.

En cierto modo, la gestión de procesos de Android puede verse como una forma de espacio de intercambio: los procesos de la aplicación representan una cierta cantidad de memoria en uso; cuando la memoria es escasa, algunos procesos pueden ser eliminados (intercambiados); cuando esos procesos se necesitan de nuevo, pueden ser reiniciados desde su último estado guardado (intercambiados).

Aquí hay otro artículo que habla de cómo los asesinos de tareas agotan la batería.

No utilice el software de eliminación automática de tareas
Para abreviar, el uso de los asesinos de tareas automáticas puede causar: un drenaje excesivo de la batería (como si el teléfono no drenara la batería lo suficientemente rápido ya), el teléfono se sobrecalienta a menudo y los programas se cierran (se cuelgan) al azar - programas que realmente quieres usar. Aléjate de ellos.

Una cosa que podrías hacer si realmente estás decidido a "detener los mapas" hasta que quieras utilizarlos es utilizar la opción de congelación en la copia de seguridad de titanio. Esto esencialmente eliminará la aplicación del dispositivo y ninguno de los servicios asociados a ella se iniciará hasta que la descongeles.

11voto

Chahk Puntos 15796

¿Has pensado en desinstalar y volver a instalar Maps como posible solución?

  1. En primer lugar, deshazte de los Mapas precargados borrando el /system/app/Maps.apk archivo:

    su  
    rm /system/app/Maps.apk

    Una vez que una aplicación del sistema se actualiza, es inútil en la carpeta /system/app y puede ser eliminada con seguridad.

  2. A continuación, copie la versión actual de Mapas en su tarjeta SD:

    cp /data/app/com.google.android.apps.maps*.apk /sdcard/
  3. Ahora desinstala la aplicación Mapas:

    pm uninstall -k com.google.android.apps.maps

    El interruptor "-k" mantiene la configuración para cuando se reinstala la aplicación.

  4. Ahora, para recuperar Mapas simplemente hay que volver a instalarlo desde la copia de seguridad:

    pm install -r /sdcard/com.google.android.apps.maps*.apk

Puede automatizar estos pasos mediante GScript que permite crear accesos directos a los scripts. Así que cree un script llamado "Desactivar mapas" con el comando del paso #3, y otro llamado "Activar mapas" con el comando del paso #4 (marque "¿Necesita SU?" para ambos).

Ahora puedes añadir 2 accesos directos de GScript a tu pantalla de inicio desde los scripts que has creado utilizando el método normal de "Añadir acceso directo" de Android (GScript será una de las opciones allí.)

El único inconveniente de este método es que lo más probable es que pierdas el acceso directo a Mapas (y/o el widget) de tu pantalla de inicio cuando lo desinstales, por lo que tendrás que volver a añadirlo después de la reinstalación. Por supuesto, seguirás pudiendo lanzar Mapas desde el cajón de aplicaciones.

5voto

Izzy Puntos 45544

Por lo que mencionas de Titanium Backup asumo que tu dispositivo está rooteado. Así que mi recomendación absoluta aquí es Gestor de ejecución automática (y sí, necesitarás el Pro - segundo sí, vale la pena). Teniendo eso instalado, abre la aplicación, usa el "modo avanzado", busca la aplicación que quieres modificar (en tu caso: Google Maps). Despliégala. ARM te mostrará todos sus listeners -- desactívalos.

Eso es todo. Ya no hay nada que lo despierte a menos que lo inicie explícitamente. PERO: Antes de iniciarlo, es posible que tenga que habilitar de nuevo esos escuchadores, o puede experimentar efectos secundarios extraños (yo lo hice). Por otro lado, al menos esto no requiere un reinicio.

Para los detalles técnicos, es posible que desee cruzar con la pregunta ¿Cómo puedo gestionar las asociaciones de intenciones con las aplicaciones? , o bien sumergirse directamente en el Sección de intenciones de los manuales para desarrolladores de AOSP .

2voto

Michael Hampton Puntos 1470

A partir de Android 4.0 Ice Cream Sandwich, puedes simplemente desactivar Google Maps en la configuración del sistema . Esto no te ayudará si todavía estás atascado en Froyo, pero otros pueden obtener algún beneficio de ello.

1voto

halr9000 Puntos 143

Sugiero utilizar la función de congelación de la copia de seguridad de Titanium página web enlace al mercado . Creo que hay que registrar la aplicación (6,58 dólares) para poder utilizar la función, pero te aseguro que vale la pena el precio si te gusta hackear tu teléfono. La otra razón principal para pagar por la aplicación (aparte de apoyar al desarrollador por escribir una buena pieza de software libre) es poder hacer instalaciones por lotes (es decir, restaurar desde una copia de seguridad) de las aplicaciones y los datos de los que has hecho una copia de seguridad. De lo contrario, tienes que pasar por los diálogos estándar de instalación de aplicaciones.

De la página web sobre la congelación:

El congelador de aplicaciones puede desactivar una aplicación (y hacerla invisible) sin desinstalarla

O puedes hacer una desinstalación y reinstalación. Usted puede encontrar que hay razones para hacer que sobre la congelación, no lo sé.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X