14 votos

¿Hay alguna forma de forzar a una aplicación a seguir ejecutándose en segundo plano sin importar qué?

En Ice Cream Sandwich (ICS) el sistema operativo categoriza tu aplicación y cada categoría tiene su propio umbral en el que el sistema operativo utiliza para determinar qué aplicación cerrar primero cuando se queda sin memoria.

¿Alguno de ustedes se ha sentido molesto porque, digamos que abrieron un temporizador para que corriera en segundo plano para medir el tiempo transcurrido de algo, luego abrieron algunas aplicaciones más y volvieron a su temporizador solo para ver que se restableció o se cerró? Quiero decir, en serio, es realmente extremadamente molesto.

¿Hay alguna forma de forzar a una aplicación a seguir funcionando en segundo plano sin importar qué incluso cuando el sistema operativo se queda sin memoria?

7 votos

Eso es una señal de un mal código por parte de la Aplicación. Un usuario nunca debería tener que lidiar con esto y Android provee medios para que una App pueda guardar su estado y restaurarlo más tarde (desde las primeras versiones de Android). Deberías enviar un reporte de error al desarrollador de la App.

8voto

Daniel De Leon Puntos 26

La respuesta aceptada resultó incorrecta o desactualizada. El módulo "App Settings" para la aplicación Xposed le permite especificar, para cada aplicación en particular, que no sean cerradas o liberadas:

http://repo.xposed.info/module/de.robv.android.xposed.installer

http://repo.xposed.info/module/de.robv.android.xposed.mods.appsettings

Por supuesto, se debe tener cuidado al jugar con aplicaciones que cambian este tipo de comportamiento a nivel bajo.

5voto

Chris Roberts Puntos 7543

Respuesta simple: No. Android siempre utiliza la priorización de OOM (Fuera de memoria) para liberar la memoria no utilizada. Puedes cambiar las prioridades de las aplicaciones (al menos hasta el reinicio) con algunos administradores de tareas, pero incluso así, si la memoria se agota, las aplicaciones en segundo plano comienzan a ser eliminadas.

Imagina este escenario: has descargado una aplicación mal codificada que se ejecuta al encender el dispositivo, causa un desbordamiento de búfer y acapara toda tu memoria. Normalmente, esta aplicación sería eliminada, pero si está configurada para permanecer abierta, efectivamente bloquea tu teléfono hasta el reinicio, y después se reinicia de nuevo, y así sucesivamente.

Algunos temporizadores utilizan servicios con altas prioridades para evitar este problema, pero si ejecutas suficientes aplicaciones de alto rendimiento y consumidoras de recursos mientras el temporizador está en segundo plano, eventualmente será eliminado.

0 votos

Parece que eso es todo. Me pregunto si hay alguna excepción a esa regla, ya sabes, aplicaciones del sistema como teléfono, contactos, alarmas, etc. Espero que Google proporcione una opción en el futuro para que los usuarios "anclen" cualquier aplicación que el usuario haya iniciado manualmente. No es necesario que se haga al inicio para evitar que el teléfono se bloquee. O tal vez podrían al menos permitir que el sistema intente anclarla por un tiempo y si el sistema se vuelve irresponsivo, permitir al usuario cerrarla.

0 votos

Si alguna vez esto sucede, lo mínimo que esperaría es una nueva categoría de permiso para dichas aplicaciones. Esto ayudaría a las personas que valoran la vida útil de su batería y la estabilidad del sistema a evitar esas aplicaciones. Yo lo haría.

1 votos

No necesita ser así, en mi opinión. Deje que el sistema siga sus antiguos métodos por defecto y en caso de que el usuario quiera que una aplicación en particular se ejecute en segundo plano solo en ese momento específico cuando surge la necesidad, simplemente proporcione esa opción. No necesita tener otra categoría de permiso ya que es discreción de los usuarios "anclar" una aplicación. No quiero que una aplicación sea permanentemente imposible de detener una vez que se ejecuta. Solo quiero una opción para hacer esto cuando haya una necesidad, tal como he descrito en mi pregunta.

1voto

Erik Puntos 2107

No. Sin embargo, se me vienen a la mente dos métodos para aliviar el problema pero ambos solo pueden ser implementados por el desarrollador: El primero es mostrar una notificación, Android dará a las aplicaciones que hagan esto una prioridad más alta que a otras. El segundo es guardar el tiempo de inicio para que cuando el temporizador se reinicie eventualmente, no se restablezca.

1 votos

Ejecutar aplicaciones sin motivo con prioridad en primer plano (por eso es necesaria la notificación) se considera una mala práctica. Como se ha dicho antes: Android proporciona una buena API que incluso permite temporizadores/contadores que no son afectados por el OOM killer. Hay una buena publicación de Dianne Hackborn sobre este tema

0 votos

No dudo que exista tal API, pero ¿dónde en esta pregunta se ha mencionado antes?

1 votos

También, obviamente hay una razón para mantener la aplicación funcionando si es posible en este caso, a diferencia del ejemplo del juego que publicaste.

0voto

Becky Mannie Puntos 1

1er método: - Si creas un Hilo Sticky en el programa, sí puedes mantener tu programa en funcionamiento de manera forzada. Sin embargo, recuerda que el usuario en modo de configuración avanzada puede detener las aplicaciones en segundo plano. Sin embargo, si escribes el hilo pegajoso de manera que se inicie en cualquier evento dado, entonces esto se puede lograr.

2do método: Si el usuario no tiene permisos de root en Android y deseas ejecutar una aplicación en segundo plano. Utiliza un script SL4 en segundo plano desde la aplicación. Utiliza un script que realice comprobaciones en segundo plano y programas y escriba la interfaz para mostrar algo más.

Por ejemplo: En la mayoría de los motores de juegos esto viene incorporado. Se conectan a servidores incluso si el usuario cerró la aplicación. La razón es que el motor crea múltiples scripts en el teléfono que se revisan aleatoriamente en eventos particulares y ese DESPARO se utiliza para ejecutar tu aplicación continuamente en el fondo o en primer plano.

***Disculpa por los errores tipográficos... el corrector ortográfico no está disponible. Espero que puedas lograr lo que tenías la intención de conseguir.

-1voto

jayeshomg Puntos 1

A veces hay una opción para bloquear la aplicación. Esto evita el cese o detención de esa aplicación en el teléfono.

La opción de bloqueo no está disponible en el sistema operativo, pero el uso de algunas aplicaciones de terceros como GO Task Manager, etc., puede ayudar.

2 votos

La matanza de OOM la realiza el kernel y ninguna aplicación puede evitarlo o "bloquear" un proceso. La aplicación a la que has vinculado es un asesino de tareas que mata aplicaciones por sí misma. La función de bloqueo a la que te refieres solo evitará que el asesino de tareas las mate.

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