En XDA he encontrado un puesto discutiendo cómo PINear una aplicación para que no sea asesinada por OOM. Como tu pregunta indica que tu dispositivo está rooteado, esto podría ser útil para ti. El principio descrito allí se puede aplicar a su caso también simplemente cambiando el oom_adj
valor especificado (el -17
lo PIN permanentemente, el prio más alto -- así que use un valor más grande para "debilitar" eso).
El script publicado allí se parece a esto:
#!/system/bin/sh
sleep 60
PPID=$(pidof com.estrongs.android.safer)
echo "-17" > /proc/$PPID/oom_adj
Un usuario anónimo señaló que también podría establecer este archivo con permisos de sólo lectura para evitar que Android lo actualice, añadiendo chmod 444 /proc/$PPID/oom_adj
al script anterior (el 444 propuesto no significa nada más que el permiso de lectura, pero no afecta a la capacidad del sistema para eliminar el archivo cuando el proceso termina). No lo he verificado, pero de hecho esto podría ahorrarle la ejecución en bucle/repetida del script, haciendo que el valor establecido sea permanente mientras el proceso viva.
Como se ha dicho, sustituya el -17
por su valor elegido. Sustituya también el nombre del paquete de la aplicación ( com.estrongs.android.safer
) por el nombre del paquete de su aplicación de destino. También puede bajar el sleep
o incluso omitir el sueño.
Ahora necesitas una manera de auto-ejecutar esto tan pronto como tu aplicación se esté ejecutando. Para esta parte, podrías, por ejemplo, utilizar Tasker : El contexto sería "app running" (y tu app seleccionada), y la tarea "run shell", con el script anterior como parámetro. Entonces, tan pronto como se inicie su aplicación (y llega a primer plano), Tasker ejecutaría el script -- y el oom_adj
debe aplicarse.
0 votos
El mismo problema aquí. Puedes usar el supercargador v6 para solucionar parcialmente tus problemas.
0 votos
Puedes pedir al desarrollador que añada un servicio (opcional) con la aplicación. Las aplicaciones que tienen un servicio conectado tienen menos probabilidades de ser eliminadas por OOM.
1 votos
@Izzy La prioridad de las aplicaciones que tienen servicios es menor que las que están en primer plano y son visibles. Por cierto, ¿cuántos desarrolladores me sugieres que calcule? No es una solución...
0 votos
@SachinShekhar tienes razón, pero con un servicio en funcionamiento el prio sigue siendo mayor que el de otras "aplicaciones en segundo plano", por lo que recuerdo. Y por lo que entendí, te referías a una aplicación específica - por lo que sugeriría ese desarrollador específico :) Pero bueno, era sólo una sugerencia . Siento que no te sirva de ayuda pero valía la pena intentarlo.
0 votos
¿Has comprobado Mantener una aplicación en la memoria ? Parece que eso respondería a su pregunta.