Lifecycle Series Curso 1 de JetPack Learning

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:

Ciclo vital

Se puede ver que tanto onCreateX de la clase base final como OnCreateX de la clase derivada se llamarán

Supongo que te gusta

Origin blog.csdn.net/g241893312/article/details/129749231
Recomendado
Clasificación