【发布时间】:2020-05-02 14:13:52
【问题描述】:
我正在重构我们的 android 代码,但无法处理以下问题。我们的一些片段包含过多的代码(约 1000 行代码)。
- 我们可以从后端动态更新我们的布尔标志。
- 我们的片段应根据来自后端的布尔标志处理额外的 UI。
我遵循 ViewModel + LiveData 样式来处理我们的 UI 逻辑。基本上,我们的一些 Fragment 从我们的 VM 中观察到 5-7 个不同的 LiveData observables。每个 LiveData 观察者产生 20-100 行代码。它们处理颜色变化、不同对话框的外观、小吃店或底片等。
现在我想减少 Fragments 中的代码,但我不知道应该如何解决这个问题。
我立即想到的一个解决方案是使用继承。例如,我们的片段将扩展 FragmentFeature2->FragmentFeature3->FragmentFeature4->FragmentFeature5。他们都会在 onViewCreated 中观察特定的 LiveData。
不过,我认为继承似乎是一个 hacky 解决方案,并且会在未来引发更多问题。理想情况下,我希望有以下场景:
我们的片段会为每个特征创建一个不同的类,它会充当特定 LiveData 的管理器。问题是你不能在一个类中观察 LiveData,没有视图生命周期所有者。也许我遗漏了一些东西,有人可以纠正我:)
【问题讨论】:
标签: android-fragments android-lifecycle android-livedata android-viewmodel