翻译:English
Sketch 依赖 Lifecycle 监控页面的生命周期,用于以下功能:
- ViewTargetRequestDelegate 在 onDestroy 时自动停止请求
- GenericViewDisplayTarget 在 在 onStart 和 onStop 时自动控制动图播放
- SketchZoomImageView 在 onStop 和 onStart 时自动释放或恢复碎片
如果在创建请求时没有设置 lifecycle Sketch 会按如下顺序获取 lifecycle:
view:
- 通过 view.findViewTreeLifecycleOwner() API 获取
- 通过 view.context 获取(如果 context 实现了 LifecycleOwner 接口,例如 Activity)
- 通过 ImageRequest.Builder.context 获取(如果 context 实现了 LifecycleOwner 接口,例如 Activity)
- 使用 GlobalLifecycle
compose:
- 通过 LocalLifecycleOwner.current.lifecycle API 获取
- 通过 ImageRequest.Builder.context 获取(如果 context 实现了 LifecycleOwner 接口,例如 Activity)
- 使用 GlobalLifecycle
如果上述默认值无法获取到 Lifecycle 或默认获取的 Lifecycle 不满足你的需求,ImageRequest.Builder 还提供了 lifecycle() 方法用于设置 lifecycle,如下:
val lifecycle = LifecycleRegistry(this)
imageView.displayImage("https://www.example.com/image.gif") {
lifecycle(lifecycle)
}