Lifecycle

作者: 爱做梦的严重精神病患者 | 来源:发表于2020-05-09 22:18 被阅读0次

Lifecycle 是一个类,用于存储有关组件(如 Activity 或 Fragment)的生命周期状态的信息,并允许其他对象观察此状态。

LifecycleObserver

类可以通过向其方法添加注解来监控组件的生命周期状态。然后,您可以通过调用 Lifecycle 类的 addObserver() 方法并传递观察者的实例来添加观察者,如以下示例中所示:

    public class MyObserver implements LifecycleObserver {
        @OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
        public void connectListener() {
            ...
        }

        @OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
        public void disconnectListener() {
            ...
        }
    }

    myLifecycleOwner.getLifecycle().addObserver(new MyObserver());
    

在上面的示例中,myLifecycleOwner 对象实现了 LifecycleOwner 接口,我们将在接下来的部分中对该接口进行说明。

LifecycleOwner

LifecycleOwner 是单一方法接口,表示类具有 Lifecycle。它具有一种方法即getLifecycle(),该方法必须由类实现。

此接口从各个类(如 FragmentAppCompatActivity都默认实现了该接口)抽象化 Lifecycle 的所有权,并允许编写与这些类搭配使用的组件。任何自定义应用类均可实现 LifecycleOwner 接口。

实现 LifecycleObserver 的组件可与实现LifecycleOwner的组件无缝协同工作,因为所有者可以提供生命周期,而观察者可以注册以观察生命周期。

    class MyActivity extends AppCompatActivity {
        private MyObser myObser;

        public void onCreate(...) {
            myObser= new MyObser (this, getLifecycle(), () -> {
                // update UI
            });
            Util.checkUserStatus(result -> {
                if (result) {
                    myObser.enable();
                }
            });
      }
    }
  • 具体使用方法:在LifecycleObserver中写好不同生命周期状态的代码调用。然后在LifecycleOwner注册该observer。

相关文章

网友评论

      本文标题:Lifecycle

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