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 ?
Tu clase debe implementar DefaultLifecycleObserver así
public class MyFavoriteClass implements DefaultLifecycleObserverLuego 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
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 )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) }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' }