Lifecycle Series Curso 1 de JetPack Learning
Prefacio:
En los últimos años, las actualizaciones e iteraciones de la tecnología de Android son relativamente rápidas, y cada año aparecen nuevos conocimientos; en los últimos años, el enfoque de trabajo del autor ha cambiado de la aplicación al desarrollo de la capa HAL de Android; en el desarrollo de la capa HAL, principalmente usando lenguaje c. Y en el proceso, descubrí que sabía muy poco sobre el conocimiento subyacente de la computadora, y pasé mucho tiempo volviendo a aprender el conocimiento subyacente. No invertí lo suficiente en el nuevo conocimiento de las aplicaciones de Android, y no siguió el ritmo de los principales desarrolladores; Durante algunos años, quiero volver al desarrollo de aplicaciones y prepararme para aprender Android nuevamente;
Pregunta 1: implemente todos los métodos de LifecycleObserver en la clase base y luego reescriba los métodos del ciclo de vida que deben tener en cuenta en la clase específica. ¿Cómo conoce Lifecycle la clase y la función que finalmente llama de esta manera?
La pregunta anterior, de acuerdo con el siguiente código, se puede explicar de la siguiente manera: GenericLifecycleLocationListener es una clase base, TestLifecycleLocationListener es una clase concreta, ¿cómo llama Lifecycle a la función de la clase concreta final, se llama a través de la clase base o puede cruza directamente la clase base
public class GenericLifecycleLocationListener implements LifecycleObserver {
@OnLifecycleEvent(Lifecycle.Event.ON_CREATE)
void onCreateX(LifecycleOwner owner) {
System.out.println("GenericLifecycleLocationListener onCreateX");
}
@OnLifecycleEvent(Lifecycle.Event.ON_START)
void onStartX(LifecycleOwner owner) {
}
@OnLifecycleEvent(Lifecycle.Event.ON_STOP)
void onStop(LifecycleOwner owner) {
}
@OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
void onResume(LifecycleOwner owner) {
}
@OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
void onPause(LifecycleOwner owner) {
}
@OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
void onDestory(LifecycleOwner owner) {
}
}
public class TestLifecycleLocationListener extends GenericLifecycleLocationListener {
public TestLifecycleLocationListener(OnLocationChangedListener onLocationChangedListener) {
super(onLocationChangedListener);
}
@Override
void onCreateX(LifecycleOwner owner) {
super.onCreateX(owner);
System.out.println("TestLifecycleLocationListener onCreateX");
}
}
public class MainActivity extends ComponentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
System.out.println("MainActivity---> onCreate;");
getLifecycle().addObserver(new TestLifecycleLocationListener());
}
}
En la interfaz de prueba, use el siguiente método para asociar Lifecycle
getLifecycle().addObserver(new TestLifecycleLocationListener());
Al simular la llamada en el lado de Android en el proyecto Java, el resultado completo es el siguiente:
Se puede ver que tanto onCreateX de la clase base final como OnCreateX de la clase derivada se llamarán