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:

  1. salida Logcat: Yo consulto Logcat cada 0,8s (filtra para mostrar sólo los eventos ActivityManager) pero esto se come a muchos Recursos
  2. 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?

¿Fue útil?

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top