2011-04-01 6 views
8

Una de las clases que he escrito necesidades de reaccionar cuando los siguientes eventos ocurren Actividad:Hacer que un objeto escuche los eventos del ciclo de vida de la actividad?

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

Puedo reaccionar a los de la actividad en sí:

clase pública Activity extends Applicatio nContext { protected void onCreate (Bundle savedInstanceState);

protected void onStart(); 

protected void onRestart(); 

protected void onResume(); 

protected void onPause(); 

protected void onStop(); 

protected void onDestroy(); 

}

de la actividad que pude ver el objeto en cuestión que ha ocurrido un evento determinado, pero no me gusta esta idea: Se requiere que el desarrollador para implementar la lógica fuera de mi objeto/clase. Idealmente, me gustaría que el objeto sea responsable de registrar estos eventos y establecerse como un oyente independiente de la Actividad.

¿Alguna idea? Gracias por adelantado.

Respuesta

7

El nivel de API 14 tiene Application.ActivityLifecycleCallbacks.
Antes de eso, afaik, lo siento, no.
Si desea ofrecer a su clase a los demás, tendrá que o bien dar clases abstractas que se extienden las actividades más comunes, o que se ponen ciertas llamadas en sus propios métodos de ciclo de vida de actividad, como

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

mayo como bien, hágalo más general, y cree clases abstractas de Notificación de actividad que acepten NotifyingActivity.LifecycleListener's, y haga que su clase implemente dicho oyente y se registre en su constructor.

+1

Un ejemplo de uso de 'Application.ActivityLifecycleCallbacks', puede ser útil a alguien: https://gist.github.com/alexjlockwood/6298122 – gustavohenke

-1

Puede usar this library que hace exactamente lo que está tratando de hacer, sin tener que escribir código en su actividad o en su actividad base.

y es muy fácil de usar:

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

Tal vez ayude a alguien

Cuestiones relacionadas