Registrierung für die Veranstaltungen einer Aktivität
-
11-12-2019 - |
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.
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...