¿Cómo puedo evitar que las aplicaciones se ejecuten en segundo plano? [duplicar]

Posible duplicado:
¿Cómo puedo detener la ejecución de aplicaciones y servicios?

Ya hay una pregunta similar a esta, pero la mía tiene un alcance más limitado y no se aborda en la otra pregunta:

Considere el caso de una aplicación que cumple con los siguientes criterios:

  1. Tomemos un administrador de archivos como ejemplo, pero podría ser una aplicación diferente con la misma facilidad. La aplicación específica no es importante para esta pregunta.
  2. Esta aplicación no tiene una necesidad legítima de ejecutarse en segundo plano. Solo necesito la administración de archivos cuando estoy usando activamente la aplicación. (En caso de que mi ejemplo específico resulte ser necesario, supongamos, por el bien de la discusión, que en realidad no lo es).
  3. El hecho de que se ejecuta en segundo plano es confirmado por un monitor del sistema .
  4. Aunque creo que no tiene una necesidad legítima de ejecutarse en segundo plano y no quiero que lo haga, no quiero desinstalarlo.

¿Puedo evitar que una aplicación de este tipo se ejecute en segundo plano?

Aplicación práctica

Para ilustrar la necesidad de esta pregunta específica y por qué no estoy nombrando aplicaciones específicas, considere lo que tenía en mente cuando escribí esta pregunta:

Me gustaría revisar mis aplicaciones y decidir cuáles quiero ejecutar como servicios. Algunos deberían ejecutarse sin restricciones. Algunos nunca deberían correr. Algunos solo deben ejecutarse cuando se cumple un conjunto de condiciones. Usando la información de una respuesta a esta pregunta, podría implementar esto, posiblemente mediante algún script personalizado, posiblemente usando Tasker, o posiblemente usando otro enfoque. Tratar de manejar esto a través de la configuración de cada aplicación individual sería casi imposible.

Por supuesto, si lo que estoy preguntando en esta pregunta no es posible, entonces esta aplicación no es viable.

Notas basadas en los comentarios y respuestas.

  • La razón por la que quiero hacer esto es irrelevante. Quizá sea para ahorrar batería. Quizás sea otra razón. Esta pregunta es acerca de cómo , no por qué . Una advertencia de que una solución en particular podría tener efectos secundarios negativos es útil si se presenta junto con esa solución. Decir "es imposible" es legítimo si es cierto. Decir "No lo hagas" no es útil.
  • Esto no es un duplicado de la pregunta a la que me vinculé en mi primer párrafo. Esa pregunta era sobre salvar la memoria. Este no lo es. Ese dijo, básicamente, "No lo intentes". Esa no es una respuesta válida a esta pregunta.
  • Las aplicaciones específicas no son importantes, por lo que fui vago. Di una pista sobre un ejemplo específico que tenía en mente, pero estoy buscando una respuesta general aquí.
  • Una solución también debe evitar que una aplicación se reinicie automáticamente; de lo contrario, no es una gran solución.
  • Varias personas han declarado que se trata de un duplicado. Déjame tratar de explicar más claramente por qué no lo es:
    1. Esta pregunta trata sobre cómo evitar que una aplicación se ejecute en segundo plano, lo que incluye evitar que se reinicie si se cancela.
    2. Las respuestas hasta ahora se han dividido en algunas categorías generales:
      1. No deberías intentarlo, porque hacerlo es innecesario. No discuto este punto en este momento, pero "No deberías intentarlo" es muy diferente de "No puedes". Lógicamente, está abordando una pregunta diferente, a saber, "¿Debería intentar eliminar las aplicaciones que no quiero ejecutar?"
      2. Use el método X para eliminar la aplicación. Desafortunadamente, cuando probé dicho método, no impidió que la aplicación se reiniciara, tal como predijeron otros. Entonces, no es realmente una respuesta.
      3. Haga ping al desarrollador/es un error. Esta es la más útil de las soluciones sugeridas, pero mi pregunta buscaba una solución genérica.
    3. Las otras preguntas de las que se ha dicho que esta pregunta es un duplicado cubren el mismo terreno que en mi punto anterior. Por lo tanto, mi pregunta específica no se ha abordado, a pesar de muchas afirmaciones en sentido contrario. Sin embargo, parece que la respuesta es un simple "No puedes".
    4. Hay una pregunta relacionada en meta. En la respuesta de Jeff Atwood , dice en parte: "Por lo general, es suficiente vincular a la otra pregunta y explicar por qué no satisface sus necesidades". Todo el hilo es a propósito de esta pregunta. He hecho esto desde el principio y proporcioné más detalles en ediciones posteriores.
Como esta no es una respuesta real, solo comentaré: muchas ROM personalizadas tienen una función para hacer que una presión prolongada del botón Atrás apague por completo cualquier aplicación activa. Con frecuencia uso esto para salir de aplicaciones que quiero que desaparezcan por completo hasta que las abra la próxima vez. Aparte de eso, es bueno saber que las aplicaciones en segundo plano no deberían afectar la duración de la batería.
Su pregunta es un duplicado de demasiadas preguntas; no tiene un alcance más limitado, solo está explicando lo que muchos otros no hicieron. Decir que no es un duplicado no significa que no sea un duplicado. Las soluciones siempre se dividieron en tres categorías: 1) usar task killer, 2) desinstalar la aplicación o 3) deshabilitar el servicio en la aplicación. También hay muchas preguntas que discuten los pros y los contras de los asesinos de tareas. En este punto, no veo nada en esta pregunta que no se haya discutido ya en otros hilos. Sea más específico, la gestión de tareas en segundo plano solo se puede decidir caso por caso.
@LieRyan: vea mi edición anterior, donde explico cómo esta es, de hecho, una pregunta diferente.
Creo que necesitamos alguna pregunta canónica de ese tipo. Los duplicados 1 , 2 , de 3 no entran en esa categoría. Propongo migrar las respuestas de 3 aquí y marcarlo como duplicado.
El flujo simple del ciclo de vida de la actividad, que está documentado en las páginas de desarrolladores de Google, y que emplea y utiliza la gran mayoría de los desarrolladores. Lo que está encontrando es esto: ¿cómo puedo controlar una aplicación que ha creado un desarrollador ? para evitar que pase a un segundo plano , ¡no puede! ¡El desarrollador puede haber tomado una decisión de diseño sobre el ciclo de vida y en su lugar utilizó un servicio! Pero esta pregunta es discutible ya que no estás siendo específico y esquivando la verdadera pregunta: ¿a qué aplicaciones te refieres?
Finalmente, hay una discusión sobre el problema real. La pregunta, tal como la resumió, es perfectamente razonable, ya que en algunos mundos (vengo del mundo de Linux) en muchas circunstancias puede hacer precisamente eso. Así que en Android aparentemente no puedes. Me parece bien. Esa es la respuesta que estaba buscando. Al no ser específico, no estoy eludiendo la verdadera pregunta. Estoy tratando de presionar a la gente para que responda la verdadera pregunta en lugar de responder preguntas irrelevantes más cómodas, como la gente ha estado tratando de hacer. Si fuera más específico, obtendría respuestas específicamente relacionadas con esas aplicaciones, no respuestas generales.
Tenga en cuenta que este sitio (y, por extensión, el resto de Stack Exchange) funciona mejor con preguntas específicas que tienen la posibilidad de una respuesta única y definitiva. Una pregunta "general" puede ser demasiado amplia para obtener respuestas útiles.
El problema aquí es que la falta de especificidad significa que se agrupan demasiados casos completamente distintos: hay una residencia de fondo sin ejecución real, simplemente pendiente de recuperación de recursos. Hay antecedentes para hacer algo en su nombre que no sabía que aún tenía que suceder. Se está ejecutando en segundo plano debido a errores/desarrolladores que no entienden los problemas del ciclo de vida de la actividad y el servicio. Y finalmente, hay una ejecución en segundo plano para lograr cosas que desearías que la aplicación no intentara hacer, que son inútiles o perjudiciales.

Respuestas (4)

tl; dr

Está bien si la aplicación en segundo plano es solo una actividad. Las actividades que solo consumen algo de memoria generalmente no pueden ejecutar cálculos en segundo plano. Por lo tanto, no se utiliza CPU ni batería para ellos. Pero si la aplicación en segundo plano ejecuta un servicio:

Hacer ping al desarrollador

¡Haga ping al desarrollador! Uno de los mayores demonios que vienen con Android son los servicios que se ejecutan en segundo plano sin ningún motivo o cuando una simple verificación de intervalos con AlarmManager de Android sería suficiente. Necesitamos matarlos a todos con fuego y no ignorándolos. Todo lo que no implique una solución por parte del desarrollador es solo un truco sucio que, según la experiencia, dará como resultado otros efectos secundarios negativos.

Actividades que se ejecutan en segundo plano

Las aplicaciones puras de Android y sus actividades generalmente permanecen en la memoria durante un tiempo después de que se han quitado de la vista. Pero en algún momento pueden ser eliminados por ActivityManager de Android si hay una presión de memoria continua. Este es el comportamiento previsto, nosotros (los usuarios) lo queremos de esa manera y funciona bien en las versiones recientes de Android. Por lo tanto, no hay nada de malo si ve su administrador de archivos dando vueltas en la memoria.

Servicios que se ejecutan en segundo plano

Pero , si se trata de un servicio que ve que se ejecuta para siempre sin motivo aparente (y sin la posibilidad de desactivar el servicio en algún lugar de la configuración de las aplicaciones), debe comunicarse con el desarrollador . En el 99% de todos los casos, no hay razón para desperdiciar su preciada memoria al hacerlo. Android proporciona con las intenciones y el ya mencionado AlarmManager suficientes instalaciones para evitar servicios de ejecución prolongada. A veces, los desarrolladores responderán con "pero Google Maps también hace eso" . Argumento que esto nunca es una excusa para señalar a otros, además de que no proporciona una razón válida para ejecutar un servicio en segundo plano.

Buena explicación y al grano, +1 de mi parte. Estoy enojado porque me robaste mi Google-Maps-Argument xD En demasiados casos, Google mismo da los peores ejemplos (ver, por ejemplo, la configuración de sincronización en segundo plano, que varias aplicaciones de Google ignoran permanentemente, y otras "actividades en segundo plano" que no son configurable, podría cantar una larga canción sobre eso...).

¿Puedo evitar que una aplicación de este tipo se ejecute en segundo plano?

Te niegas a aceptar las respuestas que obtienes porque crees que no encajan, pero encajan. Su pregunta es cómo detener las aplicaciones automáticamente en lugar de dejar que se ejecuten en segundo plano. La respuesta que está obteniendo es que, en la mayoría de los casos, esto es innecesario y omite por completo la forma en que se crea Android para tratar con las aplicaciones en segundo plano.

Hay muchas aplicaciones disponibles para matar aplicaciones en segundo plano, también puede deslizarlas o puede usar comandos cortos como "presionar prolongadamente hacia atrás" en ciertas roms para cerrar el proceso. Sin embargo, muy raramente se espera esto del usuario; una aplicación que se comporta mal debe informarse en primer lugar, en lugar de solucionarse.

Si una aplicación "no tiene una necesidad legítima de ejecutarse en segundo plano", pero sigue utilizando los recursos del sistema (asegúrese de que esto sea cierto), entonces esa aplicación está mal diseñada. No es un fallo del sistema operativo Android.

Dicho esto, hay muchas formas de cerrar aplicaciones manualmente. Hacerlo automáticamente no tiene sentido, la mayoría de las aplicaciones se comportan bien.

Usted resumió correctamente mi pregunta y una posición común. Pero hay un problema lógico aquí. La respuesta "No es necesario" lógicamente no responde a la pregunta "¿Cómo puedo ..." Consulte mi edición de mi pregunta para obtener más información.
Es contraproducente responder preguntas que probablemente se basen en un malentendido. Es como esperar una respuesta a la pregunta "¿cómo copio archivos con el ddcomando?" y luego negarse a aceptar que cpes una mejor alternativa. Puedo ver el sentido de responder cada pregunta desde una perspectiva de aprendizaje, pero tampoco queremos confundir a las personas que hacen la pregunta externamente a través de búsquedas, etc.
@ bigbadonk420: buen punto, las preguntas con una premisa inválida a menudo no se pueden responder. Pero su ejemplo es extraño, dado que una instalación estándar de Android tiene un comando dd pero carece de uno cp ;-)

Use Llama , una aplicación que puede automatizar muchas cosas, incluida la eliminación de una aplicación cuando va a una aplicación diferente. Requiere root para matar aplicaciones.

Crea un nuevo Event. Agregue la condición llamada Active Appy elija el estado App stopped or in background. Elija la aplicación en la que desea enfocarse.

A continuación, agregue un Action. Seleccione Kill Application (root privileges), luego seleccione su aplicación nuevamente.

Ahora, cada vez que salgas de la aplicación, Llama la matará.

Tenga en cuenta que la aplicación puede tener otras formas de iniciarse, como iniciarse en el arranque o recibir un mensaje de texto o cualquier otro Intentque maneje. Para evitar que los maneje Intents, use la aplicación Permisos denegados o use una rom personalizada como CyanogenMod que tenga la capacidad incorporada. Estas aplicaciones pueden revocar los permisos para cualquier aplicación (nuevamente, se requiere root).

Editar: parece que la versión gratuita de Permisos denegados ya no está disponible. Todavía puedo acceder a la página de Google Play (porque la tengo instalada), pero ya no está para los nuevos usuarios. Sin embargo, la versión de pago sigue ahí.

No se recomienda eliminar las aplicaciones que se ejecutan en segundo plano, especialmente los servicios, ya que se reiniciarán instantáneamente y absorberán el jugo de la batería... solo mis 2 centavos. ;)
El OP no especifica qué aplicaciones desean eliminar. Eliminar Facebook, por ejemplo, ahorrará batería, ya que no buscará actualizaciones. Y no se reiniciará automáticamente; solo algunos servicios pueden hacerlo. Hay situaciones en las que matar una aplicación es bueno.
Utilicé Permisos denegados en mi teléfono anterior una vez. Cuando se inició, inmediatamente comenzó a hacer cambios que no había pedido y desestabilizó mi teléfono. No volveré a usar esa aplicación.
Gracias por la respuesta. Como soy un usuario de Tasker, configuré una configuración equivalente. Sin embargo, no impidió que mi aplicación de prueba se reiniciara.

Si está ejecutando un sándwich de helado o una gominola, puede acceder a la configuración de las aplicaciones y cerrar manualmente la aplicación al pasar a las aplicaciones en ejecución. Alternativamente, puede presionar el botón de la aplicación reciente y deslizarlos fuera de la pantalla. Sin embargo, este método no obtendrá todos los procesos en segundo plano.