Frage

Gibt es eine Möglichkeit, sich für die Veranstaltungen einer Aktivität anzumelden?Ich interessiere mich speziell für die onStart / onStop-Ereignisse und möchte der Aktivität dafür keine speziellen Operationen hinzufügen.

War es hilfreich?

Lösung

Eine Möglichkeit, Ereignisse aus dem Lebenszyklus anderer Aktivitäten abzurufen, besteht darin, Ihre Klasse als zu registrieren Application.ActivityLifecycleCallbacks mit dem Haupt Application instanz- und Filterereignisse für die Activity sie interessieren sich dafür.

Dies ist ein kurzes Beispiel (möglicherweise möchten Sie die Rückrufe von einer anderen Methode / Klasse als registrieren MainActivity.onCreate oder du wirst diese Nachricht verpassen;) und du hast dort vielleicht eine Abhängigkeit, die du nicht willst)

Über die Aktivität, die Sie ausspionieren möchten:

public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // Register a spy for this activity
        getApplication().registerActivityLifecycleCallbacks(new ActivitySpy(this));
    }
}

Dann sieht der Spionagecode ungefähr so aus:

public class ActivitySpy implements ActivityLifecycleCallbacks {

    private final Activity mActivity;

    public ActivitySpy(Activity activity) {
        mActivity = activity;
    }

    @Override
    public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
        if (mActivity == activity)
            Log.i("SPY", "Activity Created");
    }

    @Override
    public void onActivityDestroyed(Activity activity) {
        if (mActivity == activity)
            Log.i("SPY", "Activity Destroyed");
    }

    // (...) Other overrides

}

Sie können den Spion auch von einem anderen Ort aus registrieren, wenn Sie einen Verweis auf die Aktivität haben, der Sie folgen möchten.

Ich hoffe das hilft :)

BEARBEITEN: Ich habe vergessen zu erwähnen, dass dies nur bei funktioniert API Level 14 und höher...

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top