Escuchar eventos ActivityManager?
-
20-09-2019 - |
Pregunta
Es posible que de alguna manera para escuchar a los acontecimientos de la ActivityManager, por ejemplo, cuando se inician las actividades? ¿El ActivityManager envíe emisiones? Yo no te has encontrado nada que indique que lo hace.
Lo que básicamente tiene que hacer: Quiero mi aplicación para lanzar una de mis actividades siempre que se inicie un cierto (thirdparty) app / toma el foco. El problema es que esto tiene que ocurrir antes de que aparezca en realidad la aplicación thirdparty.
Lo que he tratado hasta ahora como soluciones:
- salida Logcat: Yo consulto Logcat cada 0,8s (filtra para mostrar sólo los eventos ActivityManager) pero esto se come a muchos Recursos
- getRunningTasks: ralentiza mucho el teléfono también y no es muy seguro, como una actividad podría estar funcionando pero no está en el foco
¿Alguna idea?
Solución
supongo que no hay realmente otra manera de manejar la herencia del estado del sistema glabal, solamente
(ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
ActivityManager.getRecentTasks () -. Devuelve una lista de las tareas que se están ejecutando actualmente, con el más reciente es la primera y más viejos queridos después con el fin
Para más detalles comprobar docs
Tal vez, aunque Android es un Linux puede ejecutar las herramientas del sistema como
Runtime.getRuntime().exec("ps -aux | grep smth")
Pero yo creo que sería difícil de detectar aplicación Java en particular.
Otros consejos
Creo que se puede utilizar el modo de puesta en marcha para determinar qué actividad para poner en marcha a nivel superior. Por favor, compruebe la pregunta:? Android singleTask o el modo de lanzamiento SingleInstance . Tal vez le ayudará.
Yo tenía un aspecto en el origen de Android, pero no parece haber ninguna eventos transmitidos.
https://android.googlesource.com/platform/packages/providers/ApplicationsProvider