Come get qualsiasi identificatore dell'attività più alta?

Ho un servizio e il suo comportmento deve cambiare quando le attività più alte cambiano. Dire, l'attività A è triggers e quindi il servizio inizia una sorta di elaborazione. Questa elaborazione deve arrestarsi quando l'attività A non è più visibile: l'utente ha premuto "Indietro", "Home" o ha fatto altro che rende l'Attività A invisibile. Questa attività A non deve essere a conoscenza del servizio – vale a dire non deve esplicitamente informare il servizio che sta andando via.

In poche parole, c'è un modo per:

  • Cassetto di navigazione Android in alto ActionBar
  • Come utilizzare NDK nel progetto android?
  • Come scoprire quale risorsa viene utilizzata?
  • Trasformazione del text del delegato in applicazioni Android "plugin", non noti in anticipo
  • Rendering tardivo di webview di Android
  • Google Maps Android API v2 creando un nuovo LocationSource
    • Ottieni qualunque tipo di identificazione (riferimento dell'object, nome di class, ID, ecc.) Dell'attività superiore,
    • Ricevi la notifica quando le modifiche più alte delle attività?

    PS Può sembrare un comportmento malware, ma non lo è! È un caso di utilizzo legittimo!

    Modifica: le attività non sono nella mia applicazione. Possono essere di qualsiasi cosa: browser, mappe app, impostazioni, ecc.

    2 Solutions collect form web for “Come get qualsiasi identificatore dell'attività più alta?”

    Questa parte superiore è obsoleta. Vedere fondo per la risposta.

    Suppongo che tu ti riferisca a Attività all'interno della tua applicazione:

    Tutte le attività chiamano onResume() quando vengono in primo piano e onPause() quando lasciano in primo piano. Basta sovrascrivere questo metodo con la tua funzionalità (assicuratevi di call super.onResume() e super.onPause() rispettivamente!).

    Per quanto riguarda l'identificatore, forse puoi rendere il tuo servizio un metodo statico che viene chiamato da un'attività che viene in primo piano (in onResume() ), fornendo un riferimento a se stesso, alla sua class, ad un ID arbitrario, ecc.

    Riferimento: http://developer.android.com/reference/android/app/Activity.html


    Edit:

    È ansible accedere all'attività di top attività tramite ActivityManager -> esecuzione di attività -> ComponentName . Assicurati di dichiarare <uses-permission android:name="android.permission.GET_TASKS" /> nel tuo manifesto.

     Context context = someArbitraryContext; ActivityManager am = (ActivityManager) context. getSystemService(Activity.ACTIVITY_SERVICE); String packageName = am.getRunningTasks(1).get(0).topActivity.getPackageName(); String className = am.getRunningTasks(1).get(0).topActivity.getClassName(); 

    Per get una notifica, probabilmente dovrai solo controllare l'attività Top each x millisecondi.

    Crea una baseActivity e estende tutte le altre attività da baseActivity , in onResume salva l'attività corrente in una statica pubblica Archiviato in una class Globale (nel mio caso estende l'applicazione)

     public class baseActivity extends Activity { @Override protected void onResume() { super.onResume(); Global.Activity = this; } } 

    Altre attività

      public class mainActivity extends baseActivity { // You Can Use Global.Activity Everywhere ! , Even in a Object Extended Class } 
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.