美文网首页
Jetpack学习-2-Lifecycle

Jetpack学习-2-Lifecycle

作者: 主音King | 来源:发表于2020-08-13 10:23 被阅读0次

Lifecycle是什么

是Jetpack提供的一个组件;可以感知Activity、Fragment生命周期变化。

使用

自定义LifecycleObserver

public class LifecycleObserverImpl implements LifecycleObserver {
    private static final String TAG = "Lifecycle-";

    @OnLifecycleEvent(Lifecycle.Event.ON_CREATE)
    public void onCreate() {
        Log.d(TAG, "onCreate: ");
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_START)
    public void onStart() {
        Log.d(TAG, "onStart: ");
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
    public void onResume() {
        Log.d(TAG, "onResume: ");
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
    public void onPause() {
        Log.d(TAG, "onPause: ");
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_STOP)
    public void onStop() {
        Log.d(TAG, "onStop: ");
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
    public void onDestroy() {
        Log.d(TAG, "onDestroy: ");
    }
}

在Activity使用

public class MainActivity2 extends AppCompatActivity {

    private LifecycleObserverImpl observer;
    @Override

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        observer = new LifecycleObserverImpl();
        getLifecycle().addObserver(observer);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        getLifecycle().removeObserver(observer);
    }
}

原理

Lifecycle感知生命周期变化,通知observer。getLifecycle().addObserver(observer)。调用了FragmentActivity的getLifecycle()--》ComponentActivity的getLifecycle() 最终返回mLifecycleRegistry。
将observer和state组装微ObserverWithState对象。ReflectiveGenericLifecycleObserver创建CallbackInfo信息,通过注解添加到map中。observer注册了Lifecycle.Event.ON_RESUME监听。调用invokeMethodsForEvent方法。最终是反射调用,通过addObserver,解析注解保存起来。


image.png

相关文章

网友评论

      本文标题:Jetpack学习-2-Lifecycle

      本文链接:https://www.haomeiwen.com/subject/jubddktx.html