Android fragment中使用LiveData的问题

fragment中使用LiveData时,需要传入一个owner参数,若传入fragment的this,会直接报错,但是查看源码可知,fragment是实现了LifecycleOwner接口。但是为什么编译器爆红呢?经过查询相关资料得知


1.png

以上为谷歌官方的说明,搞了半天是谷歌不让用了,推荐使用getViewLifecycleOwner()来获取LifecycleOwner,点进去看源码注释
Snipaste_2022-08-11_15-08-58.png

翻译一下就是,可以获取一个与fragment视图生命周期相关的lifecycle,大多数情况下,这个lifecycler反映了fragment的生命周期,但是某些情况下fragment的生命周期比view本身的生命周期长很多。
我们使用LiveData的一个原因是,livedata可以感知到生命周期变化,那这就显而易见了,fragment本身实现的LifecycleOwner是与自己的生命周期相关的,但是view的生命周期实际是比fragment的短的。正常情况下,我们从livedata中拿到数据实际就是为了更新显示到view上,所以应该感知view的生命周期。(浅学一下,若有误,希望老铁们指正)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容