Lifecycle 解析,靠这份Android知识点PDF成功跳槽

本文详细解析了Android的Lifecycle机制,包括LifecycleOwner、LifecycleObserver及其子接口,阐述了Activity的LifecycleRegistry如何感知和分发生命周期事件。通过示例展示了如何使用注解和接口来监听生命周期,最后探讨了LifecycleRegistry如何将事件传递给LifecycleObserver。
摘要由CSDN通过智能技术生成
  • Events:从框架和 Lifecycle 类分派的生命周期事件。这些事件映射到 Activity 和 Fragment 中的回调事件。
  • States:由 Lifecycle 对象跟踪的组件的当前状态。

构成 Android Activity 生命周期的状态和事件.png

通过注解的方式举个简单例子:

class MyLifecycleObserver : LifecycleObserver {

@OnLifecycleEvent(Lifecycle.Event.ON_START)
fun connect() {
Log.e(TAG, “connect”)
}

@OnLifecycleEvent(Lifecycle.Event.ON_STOP)
fun disconnect() {
Log.e(TAG, “disconnect”)
}

companion object {
private const val TAG = “lifecycle_observer_demo”
}
}

// 将 Lifecycle 对象和 LifecycleObserver 对象进行绑定
LifecycleOwner.getLifecycle().addObserver(MyLifecycleObserver())

关联接口

LifecycleOwner

// LifecycleOwner.java
// 具有Android生命周期的类。自定义组件可以使用这些事件来处理生命周期更改,而无需在Activity或Fragment中实现任何代码。
@SuppressWarnings({“WeakerAccess”, “unused”})
public interface LifecycleOwner {

@NonNull
Lifecycle getLifecycle();
}

LifecycleObserver

// LifecycleObserver.java
// 将一个类标记为LifecycleObserver。它没有任何方法,而是依赖于{@link OnLifecycleEvent}注解方法。
@SuppressWarnings(“WeakerAccess”)
public interface LifecycleObserver {

}

LifecycleEventObserver

LifecycleEventObserver 可以获取哪个生命周期事件发生了变化

  • 如果同时使用了 DefaultLifecycleObserver,会优先调用 DefaultLifecycleObserver 的对应方法;
  • 如果同时使用了 OnLifecycleEvent 注解,将会忽略注解;

// LifecycleEventObserver.java
public interface LifecycleEventObserver extends LifecycleObserver {

void onStateChanged(@NonNull LifecycleOwner source, @NonNull Lifecycle.Event event);
}

FullLifecycleObserver

注意: 该修饰符为缺省访问修饰符

// FullLifecycleObserver.java
interface FullLifecycleObserver extends LifecycleObserver {

void onCreate(LifecycleOwner owner);

void onStart(LifecycleOwner owner);

void onResume(LifecycleOwner owner);

void onPause(LifecycleOwner owner);

void onStop(LifecycleOwner owner);

void onDestroy(LifecycleOwner owner);
}

DefaultLifecycleObserver

DefaultLifecycleObserver 存在于 androidx.lifecycle:lifecycle-common-java8:xxx 这个依赖库内;

  • 相比于注解的形式,官方推荐使用此方式来监听生命周期;
  • 如果同时使用了 LifecycleEventObserver,会先调用 DefaultLifecycleObserver 的对应方法;
  • 如果同时使用了 OnLifecycleEvent 注解,将会忽略注解;

// DefaultLifecycleObserver.java
@SuppressWarnings(“unused”)
public interface DefaultLifecycleObserver extends FullLifecycleObserver {

// LifecycleOwner 的 onCreate 方法之后调用
@Override
default void onCreate(@NonNull LifecycleOwner owner) {
}

// LifecycleOwner 的 onStart 方法之后调用
@Override
default void onStart(

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值