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。