Заставить объект слушать события жизненного цикла Activity? - PullRequest
8 голосов
/ 01 апреля 2011

Один из написанных мной классов должен реагировать, когда происходят следующие Activity события:

  • onStart ()
  • onPause ()
  • onResume ()
  • onStop ()

Я могу реагировать на тех, кто находится на самой Деятельности:

public class Activity extends ApplicationContext
{
    protected void onCreate(Bundle savedInstanceState);

    protected void onStart();

    protected void onRestart();

    protected void onResume();

    protected void onPause();

    protected void onStop();

    protected void onDestroy();
}

Из Activity я мог бы сказать объектувопрос о том, что произошло определенное событие, но мне не нравится эта идея: она требует от разработчика реализации логики вне моего object/class.В идеале я хотел бы, чтобы объект отвечал за регистрацию этих событий и назначался слушателем, независимо от Activity.

Есть идеи?Заранее спасибо.

Ответы [ 2 ]

7 голосов
/ 09 мая 2012

API уровня 14 имеет Application.ActivityLifecycleCallbacks.
Перед этим, извините, нет.
Если вы хотите предложить свой класс другим, вам потребуется либо предоставить абстрактные классы, которые расширяют наиболее распространенные виды деятельности.или попросите их сделать определенные вызовы в методах их жизненного цикла, например,

protected void onPause() {
  super.onPause();
  yourClassInstance.onPause();
}

. Можно также сделать его более общим и создать абстрактные классы NotifyingActivity, которые принимают NotifyingActivity.LifecycleListener, и заставить ваш класс реализовать такойслушатель и зарегистрируйтесь в его конструкторе.

0 голосов
/ 24 февраля 2016

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

И очень прост в использовании:

ActivityListener.bind(mActivity).with(mCallback);

Может быть, это кому-нибудь поможет

...