Glide之外层生命周期监听的方法

Glide 一个重要的特点就是通过一个透明的 Fragment 来感知外层 ActivityFragment的生命周期,在 onStart 方法里面启动网络请求,onStop 里面暂停请求,onDestroy 里面解除监听并释放内存。

那么,Glide 是怎么做到这个监听事件的?

用于监听的接口

Glide 里面用于监听生命周期的接口总有两个,它们分别是 LifecycleListenerLifecycle

/**
 * 一个用来监听Fragment或Activity生命周期的回调接口
 */
public interface LifecycleListener {
   
    /**
     * Fragment或Activity生命周期为onStart时的回调
     */
    void onStart();
    /**
     * Fragment或Activity生命周期为onStop时的回调
     */
    void onStop();
    /**
     * Fragment或Activity生命周期为onDestroy时的回调
     */
    void onDestroy();

}

LifecycleListener 是用于回调的接口,那么 Lifecycle 呢:

/**
 * 用于监听Activity / Fragment生命周期事件的接口。
 */
public interface Lifecycle {
   

    /**
     * 添加生命周期方法的回调监听
     */
    void addListener(@NonNull LifecycleListener listener);

    /**
     * 移除生命周期方法的回调监听
     */
    void removeListener(@NonNull LifecycleListener listener);
}

Lifecycle 就是用来注册 LifecycleListener 的。他们的具体关联关系,可以看一下 ActivityFragmentLifecycle ,这个类是 Lifecycle 实现类:

public class ActivityFragmentLifecycle implements Lifecycle {
   

    /**
     * 弱引用WeakHashMap持有LifecycleListener(key)再转为Set
     * Set底层就是用Map来实现的,只保留key
     */
    private final Set<LifecycleListener> lifecycleListeners =
            Collections.newSetFromMap(new WeakHashMap<LifecycleListener, Boolean>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值