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(),该方法必须由类实现。
此接口从各个类(如 Fragment 和 AppCompatActivity都默认实现了该接口)抽象化 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。