带有参数的 AndroidViewModel.为什么这是有效的,它会导致未来的问题



我之所以问,是因为我读到使用工厂是你应该如何将参数传递到 ViewModel 中,但这个实现似乎工作正常。

我的视图模型

class MyListViewModel(application : Application , currentItemName : String) : AndroidViewModel(application) {
val dataSource = Database.getInstance(application).DatabaseDao
val itemList = dataSource.getItems(currentItemName)
internal val _singleItem = MutableLiveData<Item>()
val singleItem : LiveData<Item>
get() = _singleItem
}

这是我如何在我的片段中启动它

val currentItemName = "some item name"
val binding = FragmentItemsListBinding.inflate(inflater)
val application = requireNotNull(this.activity).application
val viewModel = MyListViewModel(application, currentItemName)
binding.lifecycleOwner = this
binding.viewModel = viewModel

如果这样做没有缺点,我很高兴,但我有点担心会产生其他问题。

但此实现似乎工作正常

也许您没有测试配置更改,例如:

  • 在纵向和横向之间旋转设备
  • 打开或关闭暗模式
  • 在"设置"中切换区域设置
  • 等等

使用JetpackViewModel系统背后的重点是处理配置更改。而且,为此,您需要使用ViewModelProvider并让它管理ViewModel的创建,无论是使用内置Factory,您的自定义,还是由依赖反转框架(dagger/剑柄、Koin 等)提供的

相关内容

  • 没有找到相关文章

最新更新