2013-07-02 5 views
5

Ho un servizio Android. Voglio eseguire qualche compito quando l'utente cambia l'applicazione. C'è una trasmissione o un evento, che posso ascoltare.Android: Rileva eventi attività/modifica applicazione

Se il polling è l'unica soluzione, Qualcuno può suggerire una buona tecnica di polling.

Grazie.

+0

si dovrebbe aprire questa domanda per taglie. La mia risposta non è chiaramente una risposta degna di essere accettata, sono curioso anche su possibili soluzioni –

risposta

1

È possibile distinguere le applicazioni per il polling per la parte superiore di attività:

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; 

ma sarà a voi come spesso si sondaggio per le informazioni .. Si potrebbe provare polling per queste informazioni ogni volta che l'utente preme indietro , i pulsanti home o le presse sullo schermo .. Ma ovviamente sarà una tecnica di polling troppo e troppo male.

sembra che questo argomento è stato chiesto già prima senza e non ho ricevuto risposta sufficiente: How to be notified when foreground (top) activity (application) changes

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

+4

"Si potrebbe provare a interrogare per queste informazioni ogni volta che l'utente preme indietro, i pulsanti home o le pressioni sullo schermo" - un servizio non può rilevare nessuno di questi cose. – CommonsWare

-2

Si prega di controllare Notifications document nel sito Android Developers. È possibile visualizzare le notifiche durante la modifica della connettività Internet o durante il riavvio del dispositivo o durante l'arresto del dispositivo.