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

问题描述 投票:0回答:1

我的项目结构具有一个BaseActivity,该活动通过多个子活动扩展,因此该结构类似于

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

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

  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的生命周期?

android android-databinding android-lifecycle
1个回答
0
投票

this@ChildActivityAthis@BaseActivity指的是内存中的同一实际对象-仅存在一个活动对象。因此它们是完全等效的。

© www.soinside.com 2019 - 2024. All rights reserved.