BaseActivity 作为数据绑定的生命周期所有者

BaseActivity as Lifecycle Owner for DataBinding

我的项目结构有一个由多个子活动扩展的 BaseActivity,所以结构是这样的

                  BaseActivity
                        ^
                        | 
          -------------------------------
          |             |               |
 ChildActivityA  ChildActivityB  ChildActivityC

我将 DataBindingLiveData 一起使用,因此每次我需要为相应的绑定 class 设置 lifecycleOwner 即(在 ChildActivityA 中)

  val binding = DataBindingUtil.setContentView(R.layout.somelayout)
  binding.lifecycleOwner = this@ChildActivityA

现在我需要在每个 Activity 中重复这个样板文件,所以我创建了一个辅助扩展函数来替换上面的两行,即

fun <T : ViewDataBinding> BaseActivity.setDataBindingView(layoutId: Int): T {
   val binding = DataBindingUtil.setContentView(this, layoutId)
   binding.lifecycleOwner = this@BaseActivity
}

然后调用我的 ChildActivityA 作为

val binding = setDataBindingView(R.layout.someLayout)

如您所见,binding.lifecycleOwner 设置为 BaseActivity 而不是实际的 ChildActivityA,现在这会造成任何麻烦吗? binding.lifecycleOwner 是否仍遵循 ChildActivityA 的生命周期?

this@ChildActivityAthis@BaseActivity 指的是内存中的同一个实际对象 - 只有一个 activity 对象存在。因此它们是完全等价的。