2014-03-03 13 views
5

Ich möchte den Zustand der Anwendung aufzeichnen, wenn es von anderen Punkt des Eintrags wieder aufgenommen/erstellt wird.Erkennung des Status der Anwendung fortsetzen aus anderen Navigationsstatus android

  • App aus dem App Schublade geöffnet
  • App Benachrichtigung geöffnet
  • App von offenen Anwendungen (Long Hause press)
  • App wieder aufgenommen wird, von anderen Bildschirm geöffnet wird

I Ich weiß, dass es verfolgt werden kann, indem ich eine Basisaktivität erzeuge und Ereignisse überschreibe/pausiere, aber ich habe eine Menge Aktivität in der App. Gibt es also eine kurze Methode, um den Status der Anwendung zu erhalten?


Ich dachte über einen Service und kontinuierlich laufende Aufgaben überprüft, aber ich kann nur diesen Ansatz verwenden, wenn ich einen Weg gefunden, nur den Dienst auszuführen, wenn meine Aktivität im sichtbaren Zustand befindet. (Für die in jeder Aktivität Dienst zu binden, ist für mich nicht praktikabel)

Antwort

1

Ihre vorgeschlagene Lösung für mich gut klingt:

public class YourBaseActivity extends Activity { 

    @Override 
    protected void onResume() { 
     super.onResume(); 

     ActivityManager mgr = (ActivityManager) getSystemService(ACTIVITY_SERVICE); 
     List<ActivityManager.RunningTaskInfo> tasks = mgr.getRunningTasks(1); 

     tasks.get(0).topActivity.getClassName(); 

     //Do what you need to do with it... 
    } 
} 

Und lassen Sie alle Ihre Aktivitäten erstreckt sich dieses statt Aktivität sollte für Sie arbeiten


EDIT Ein anderer Weg, es zu tun:

erstellen sie Ihre ow n Anwendungsklasse und implementieren Application.ActivityLifecycleCallbacks, ein funktionierendes Beispiel des Codes:

public class ApplicationTest extends Application implements Application.ActivityLifecycleCallbacks { 
    @Override 
    public void onCreate() { 
     super.onCreate(); 
     registerActivityLifecycleCallbacks(this); 
    } 

    @Override 
    public void onActivityCreated(Activity activity, Bundle savedInstanceState) { 
    } 

    @Override 
    public void onActivityDestroyed(Activity activity) { 
    } 

    @Override 
    public void onActivityPaused(Activity activity) { 
    } 

    @Override 
    public void onActivityResumed(Activity activity) { 
     Log.d("testing", "onActivityResumed"); 
    } 

    @Override 
    public void onActivitySaveInstanceState(Activity activity, Bundle outState) { 
    } 

    @Override 
    public void onActivityStarted(Activity activity) { 
    } 

    @Override 
    public void onActivityStopped(Activity activity) { 
    } 
} 

und Referenz dieser Klasse in Ihrem Manifest:

<application 
    ... 
    android:name="com.example.testing.ApplicationTest" > 
+1

Guillermo, mein Freund, das ist, was wir eigentlich wissen, wir don‘ Das möchten Sie tun, bitte stellen Sie andere Lösungen zur Verfügung. Das ist nicht akzeptabel. – MKJParekh

+0

Hallo @MKJParekh Ich habe meine Antwort mit einer alternativen Lösung bearbeitet, bitte überprüfen Sie sie –

+0

Werden die Rückrufe aufgerufen, wenn wir in der App navigieren? Wenn ich eine Aktivität starte, bekomme ich dann für den anderen eine AktivitätsPause und eine AktivitätsRückmeldung? –

Verwandte Themen