LiveData

2024-10-11  本文已影响0人  EraJieZhang

LiveData

简介

LiveData是一个可观察的数据持有者类,与常规的Observable不同,LiveData可感知Activity、Fragment、Service的生命周期,确保LiveData仅更新处于活动生命周期状态的组件观察者。如果应用程序组件观察者处于started或者resumed,则LiveData认为该组件处于活跃状态,该组件会收到LiveData的数据更新,而其他注册的组件观察者将不会收到任何数据更新。

作用

优点

使用

通常LiveData都是和ViewModel一起出现的

  1. 在viewModel中创建LiveData(注:对应的Activity/Fragment
    要支持LifeCycle)

    class UserModel(application: Application) : AndroidViewModel(application) {    val userLiveData = MutableLiveData<User>()    private var mApplication: Application? = null}
    
  2. 数据更新

    val user:User = User()// setValue 在主线程中使用userLiveData.userLiveData.value = user
    // postValue 在子线程中使用(注:多次调用的时候可能只有最后一次有通知)userLiveData.userLiveData.postValue(user)
    
  3. 数据变化监听

    val userModel = ViewModelProvider(this).get(UserModel::class.java)
    userModel.userLiveData.observe(this, Observer<User> { t -> username.text = t.toString() })// 使用 LiveData 对象的 observeForever 方法来将一个没有 LifecycleOwner 的类添加到观察者列表中userModel.userLiveData.observeForever(this, Observer<User> { t -> username.text = t.toString() })// 不过使用 observeForever 获得观察者对象会一直处于活跃状态,此时就需要我们手动调用 removeObserver(Observer) 移除该观察者。
    

在fragment中使用时

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        mViewModel.personList.observe(viewLifecycleOwner) { }
}
上一篇 下一篇

猜你喜欢

热点阅读