2013-07-02 2 views
5

Ich habe einen Android-Dienst. Ich möchte eine Aufgabe ausführen, wenn der Benutzer die Anwendung ändert. Gibt es eine Sendung oder ein Ereignis, das ich hören kann?Android: Erkennen Aktivität/Anwendung Änderung Ereignisse

Wenn Polling die einzige Lösung ist, kann jemand eine gute Abfragetechnik empfehlen.

Danke.

+0

Sie sollten diese Frage für Bounty öffnen. Meine Antwort ist eindeutig keine Antwort wert, akzeptiert zu werden, ich bin auch neugierig auf mögliche Lösungen –

Antwort

1

können Sie Anwendungen unterscheiden durch Abfragen für Top Aktivität:

private String lastPackageName; 

ActivityManager am = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE); 
// get the info from the currently running task 
List<ActivityManager.RunningTaskInfo> taskInfo = am.getRunningTasks(1); 

    Log.d("topActivity", "CURRENT Activity ::" 
      + taskInfo.get(0).topActivity.getClassName()); 

ComponentName componentInfo = taskInfo.get(0).topActivity; 
String packageName = componentInfo.getPackageName(); 

if(lastPackageName != packageName){ 
    //Probably application changed 
} 

lastPackageName = packageName; 

Aber es wird an Ihnen, wie oft Sie diese Informationen abfragen .. Sie können jedes Mal Benutzer drückt wieder Polling für diese Informationen versuchen , zu Hause Tasten oder drückt auf den Bildschirm .. Aber es wird offensichtlich zu viel und schlechte Polling-Technik.

Scheint, als ob diese Frage schon zuvor gestellt wurden ohne und bekam keine ausreichende Antwort: How to be notified when foreground (top) activity (application) changes

Quelle: https://stackoverflow.com/a/4753333/1276374

+4

"Sie könnten versuchen, diese Informationen jedes Mal abzurufen, wenn der Benutzer zurück drückt, Home-Tasten oder drückt auf dem Bildschirm" - ein Service kann keine von denen erkennen Dinge. – CommonsWare

-2

Bitte überprüfen Sie Notifications document in Android Developers Website. Sie können die Benachrichtigung während der Internet-Verbindungsänderung oder während des Neustarts des Geräts oder während des Herunterfahrens des Geräts anzeigen.