L'inscription pour une activité d'événements
-
11-12-2019 - |
Question
Est-il possible de s'inscrire pour une activité d'événements?Je suis particulièrement intéressé par le démarrage / onStop événements, et je ne veux pas ajouter d'opérations spéciales dans l'activité.
La solution
Une manière d'obtenir les événements du cycle de vie des autres activités, c'est pour inscrire votre classe comme une Application.ActivityLifecycleCallbacks
avec les principaux Application
exemple de filtre et des événements pour la Activity
vous êtes intéressés.
C'est un petit exemple (vous pouvez enregistrer les rappels à partir d'une autre méthode/classe autre que MainActivity.onCreate
ou vous allez manquer ce message ;) et vous pouvez avoir une dépendance que vous ne voulez pas)
Sur l'activité que vous souhaitez spy:
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));
}
}
Puis l'Espion code ressemble à quelque chose comme:
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
}
Vous pouvez également enregistrer l'espion d'un autre lieu que si vous avez une référence à l'Activité que vous souhaitez suivre.
J'espère que cela aide :)
EDIT: J'ai oublié de mentionner, cela ne fonctionnera que sur API de Niveau 14 et au-dessus...