Вопрос

Есть ли способ зарегистрироваться на мероприятия мероприятия?Меня конкретно интересуют события onStart/onStop, и я не хочу добавлять для этого специальные операции в действие.

Это было полезно?

Решение

Один из способов получить события из жизненного цикла других действий — зарегистрировать свой класс как Application.ActivityLifecycleCallbacks с главным Application экземпляр и фильтровать события для Activity вам интересно.

Это короткий пример (возможно, вы захотите зарегистрировать обратные вызовы из другого метода/класса, отличного от MainActivity.onCreate или вы пропустите это сообщение;) и у вас может быть зависимость, которая вам не нужна)

О деятельности, за которой вы хотите следить:

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));
    }
}

Тогда шпионский код будет выглядеть примерно так:

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

}

Вы также можете зарегистрировать шпиона из другого места, если у вас есть ссылка на действие, за которым вы хотите следить.

Надеюсь, это поможет :)

РЕДАКТИРОВАТЬ: Забыл упомянуть, это будет работать только Уровень API 14 и выше...

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top