JetPack 学习之Lifecycle系列课程一

JetPack 学习之Lifecycle系列课程一

前言:

​ 近几年Android技术更新迭代比较快速,每一年就有新的知识出现; 近些年笔者的工作重点从App切换到了Android HAL层的开发;在HAL层的开发工作中,主要是使用c语言.并在此过程中,发现自己对计算机底层的知识了解太少,大量时间用于底层知识的重新学习.对Android App新的知识投入的力度不够,没有跟上主流开发者的节奏;近几年想重新回到App的开发,准备重学Android;

问题一:在基类中实现LifecycleObserver的所有方法, 然后在具体类中重写需要关心的生命周期的方法,这种方式lifecycle怎么去知道你最终调用的类跟函数的?

上面的问题,根据下面的代码,可以解释如下这样:GenericLifecycleLocationListener 是基类, TestLifecycleLocationListener 是具体类, Lifecycle 是怎么调用到最终具体类的函数的,是通过基类调用的,还是可以直接跨过基类

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());

    }

}

在测试界面,通过使用如下方法,去关联Lifecycle的

getLifecycle().addObserver(new TestLifecycleLocationListener());

通过在java 工程中模拟 android端的调用,整个输出结果如下:

Lifecycle

可以看出,最终的基类的onCreateX 跟派生类的OnCreateX都会被调用

猜你喜欢

转载自blog.csdn.net/g241893312/article/details/129749231