2012-09-29 2 views
2

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

+0

ли вы имеете в виду из другого класса? – DiogoNeves

+0

Я предполагаю, что это глупый вопрос от меня :) позвольте мне проверить ... – DiogoNeves

+0

Я думал о registerComponentCallbacks (callback) о действии, но это не совсем то, что вам нужно ... – DiogoNeves

ответ

1

Одним из способов получения событий из жизненного цикла других видов деятельности является зарегистрировать свой класс как 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)); 
    } 
} 

Затем код Spy выглядит примерно так:

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 

} 

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

Я надеюсь, что это помогает :)

EDIT: Я забыл упомянуть, что это будет работать только на уровне API 14 и выше ...

Смежные вопросы