Структура моего проекта имеет базовую активность, которая расширяется несколькими дочерними действиями, поэтому структура выглядит как
BaseActivity
^
|
-------------------------------
| | |
ChildActivityA ChildActivityB ChildActivityC
Я использую DataBinding
с LiveData
, и, следовательно, каждый раз, когда мне нужно установить вверх 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
?