Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

424
Vistas
Lifecycle OnLifecycleEvent está en desuso

Después de actualizar la biblioteca del lifecycle de vida a 2.4.0, Android Studio marcó todos los eventos del ciclo de vida como obsoletos.

 @OnLifecycleEvent(Lifecycle.Event.ON_CREATE) fun create() { tts = TextToSpeech(context, this) } @OnLifecycleEvent(Lifecycle.Event.ON_PAUSE) fun stopTTS() { tts?.stop() }

¿Hay algún reemplazo equivalente como DefaultLifecycleObserver ?

over 4 years ago · Hanz Gallego
5 Respuestas
Responde la pregunta

0

Simplemente puede reemplazar el obsoleto @OnLifecycleEvent con DefaultLifecycleObserver como puede ver en el siguiente ejemplo:

Código antiguo:

 @OnLifecycleEvent(Lifecycle.Event.ON_CREATE) fun onCreate() { // your code }

Nuevo código:

 override fun onCreate(owner: LifecycleOwner) { super.onCreate(owner) // your code }
over 4 years ago · Hanz Gallego Denunciar

0

Puede crear esta función para usar DefaultLifecycleObserver y llamarla en la devolución de llamada del ciclo de vida onCreate () de una Activity

 private fun addDefaultLifeCycleObserver() { val defaultLifecycleObserver = object : DefaultLifecycleObserver { override fun onCreate(owner: LifecycleOwner) { super.onCreate(owner) Log.d("Main", "DefaultLifecycleObserver - onCreate") } } lifecycle.addObserver(defaultLifecycleObserver) }
over 4 years ago · Hanz Gallego Denunciar

0

Para realizar un seguimiento del ciclo de vida de la Activity actual, puede utilizar la clase LifecycleEventObserver . Primero, crea una devolución de llamada,

 private val lifecycleEventObserver = LifecycleEventObserver { source, event -> if (event == Lifecycle.Event.ON_RESUME ) { Log.e( "APP" , "resumed" ) } else if ( event == Lifecycle.Event.ON_PAUSE ) { Log.e( "APP" , "paused" ) } }

Adjunte la devolución de llamada en el método onCreate de la Activity usando el método lifecycle.add( Observer ) ,

 lifecycle.addObserver( lifecycleEventObserver )
over 4 years ago · Hanz Gallego Denunciar

0

Tu clase debe implementar DefaultLifecycleObserver así

 public class MyFavoriteClass implements DefaultLifecycleObserver

Luego implemente los métodos necesarios (Android Studio: ALT + i)

 @Override public void onResume(@NonNull LifecycleOwner owner) { methodRunsAtOnResume(); } @Override public void onDestroy(@NonNull LifecycleOwner owner) { myFavoriteOnDestroyMethod(); }

En su actividad o fragmento agregue esto a onCreate()

 @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); MyOtherClass class = new MyOtherClass(); getLifecycle().addObserver(class); }

Para implementarlo de manera más correcta, cree su propia clase de observador, pásele el objeto que desea observar. Un buen artículo al respecto es https://medium.com/@MinaSamy/android-architecture-components-lifecycle-433ace1ec05d

over 4 years ago · Hanz Gallego Denunciar

0

Está en desuso porque ahora esperan que use Java 8 e implemente la interfaz DefaultLifecycleObserver. Dado que Java 8 permite que las interfaces tengan implementaciones predeterminadas, definieron DefaultLifecycleObserver con implementaciones vacías de todos los métodos, por lo que solo necesita anular los que usa.

La forma antigua de marcar funciones con @OnLifecycleEvent era una muleta para proyectos anteriores a Java 8. Esta era la única forma de permitir que una clase eligiera selectivamente qué eventos del ciclo de vida le importaban. La alternativa habría sido obligar a esas clases a anular todos los métodos de la interfaz del ciclo de vida, incluso dejándolos vacíos.

En su caso, cambie su clase para implementar DefaultLifecycleObserver y cambie sus funciones para anular las funciones aplicables de DefaultLifecycleObserver. Si su proyecto aún no usa Java 8, debe actualizar sus archivos de compilación de Gradle. Póngalos en el bloque android en el build.gradle de su módulo:

 compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } kotlinOptions { jvmTarget = '1.8' }
over 4 years ago · Hanz Gallego Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda