看到英文文章中 “LiveData 不应在 Repository 中使用” 的观点 “人传人”,这里简要分享下我的看法。

proandroiddev.com

事实上,文中提及的核心问题在于:对 Transformation 等过度设计的类的使用,导致 LiveData 的观察者回调在接触 Activity/Fragment 之前被调用,从而在回调中因执行耗时逻辑而导致主线程阻塞。

因而,问题的关键在于 Transformation 这些过度设计的类,也即,“不是 LiveData 本身应该出现在哪,而是 LiveData 的观察者回调应该出现在哪”。

所以对此问题妥当的描述应是:“建议通过 Kotlin Flow 或 RxJava 来取代 Transformation 等过度设计的类”、“建议 LiveData 的观察者回调只用于最终的 Activity/Fragment”,而不是 “LiveData 不应在 Repository 中使用”,


事实上如果你不曾使用那些过度的设计的类,那么在 Repository 通过 ViewModel 注入的 LiveData 来回推数据完全没问题。
展开
1