Question

est-il possible en quelque sorte d'écouter les événements de la ActivityManager, par exemple lorsque les activités sont mis en marche? Le ActivityManager envoie des émissions? Je havn't rien trouvé indiquant qu'il fait.

Ce que je dois essentiellement à faire: Je veux que mon application pour lancer une de mes activités chaque fois qu'un certain (thirdparty) application est lancée / prend le focus. Le problème est ce qui doit se passer avant l'application thirdparty est réellement affichée.

Ce que j'ai essayé jusqu'à des solutions de contournement:

  1. Sortie Logcat: je fais une recherche logcat chaque 0.8s (filtrée pour afficher les événements ActivityManager seulement) mais mange à beaucoup de ressources
  2. getRunningTasks: ralentit le téléphone beaucoup trop et n'est pas très sûr, comme une activité pourrait être en cours d'exécution, mais pas au point

Toutes les idées?

Était-ce utile?

La solution

Je suppose qu'il n'y a pas vraiment d'autre moyen d'héritage à gérer l'état du système glabal, seul

 (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);

ActivityManager.getRecentTasks () -. Retourne une liste des tâches qui sont en cours d'exécution, les plus récentes étant les premiers et les plus anciens après pour

Pour plus de détails vérifier docs

Peut-être que Android est un outil du système Linux, vous pouvez exécuter comme

Runtime.getRuntime().exec("ps -aux | grep smth")

Mais je pense qu'il serait difficile de détecter l'application java particulier.

Autres conseils

Je pense que vous pouvez utiliser le mode de lancement pour déterminer quelle activité pour lancer au plus haut niveau. S'il vous plaît vérifier la question: Android singleTask ou le mode de lancement de SingleInstance . Peut-être que cela vous aidera.

J'ai eu un coup d'oeil dans la source Android, mais il ne semble pas être des événements diffusés.

https://android.googlesource.com/platform/packages/providers/ApplicationsProvider

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top