Domanda

è possibile in qualche modo di ascoltare gli eventi del ActivityManager, per esempio quando vengono avviati attività? Fa l'ActivityManager inviare broadcast? Ho Havn't trovato nulla che indica che lo fa.

Quello che ho fondamentalmente bisogno di fare: io voglio la mia app per lanciare una delle mie attività ogni volta che viene lanciato un certo (di terze parti) app / prende fuoco. Il problema è che questo deve avvenire prima che venga effettivamente visualizzato l'applicazione di terze parti.

Quello che ho cercato per quanto soluzioni:

  1. uscita Logcat: interrogo logcat ogni 0.8s (filtrato per mostrare solo gli eventi ActivityManager) ma questo mangia fino a molti ressources
  2. getRunningTasks: rallenta il telefono molto troppo e non è molto sicuro, in quanto attività potrebbe essere in esecuzione, ma non attualmente a fuoco

Tutte le idee?

È stato utile?

Soluzione

Credo che non v'è in realtà altro modo legacy per gestire lo stato del sistema glabal, solo

 (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);

ActivityManager.getRecentTasks () -. Restituisce una lista delle attività che sono attualmente in esecuzione, con il più recente è primo e più anziani quelli dopo al fine

Per i dettagli controllare le docs

Forse se Android è un Linux è possibile eseguire strumenti di sistema come

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

Ma penso che sarebbe difficile da rilevare particolare applicazione java.

Altri suggerimenti

Penso che si può utilizzare la modalità di lancio per determinare quale attività da lanciare a livello superiore. Si prega di verificare la domanda:? Android singleTask o la modalità di lancio SingleInstance . Forse vi aiuterà.

Ho dato un'occhiata nella sorgente di Android, ma ci non sembra essere eventi trasmessi.

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top