Skip to content

Commit

Permalink
Fix memory leak
Browse files Browse the repository at this point in the history
  • Loading branch information
wada811 committed Mar 7, 2021
1 parent 5c65ceb commit 6a050b5
Showing 1 changed file with 9 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -8,20 +8,15 @@ import androidx.databinding.DataBindingUtil
import androidx.databinding.ViewDataBinding
import androidx.fragment.app.FragmentActivity

fun <T : ViewDataBinding> FragmentActivity.dataBinding(): Lazy<T> = object : Lazy<T> {
private var binding: T? = null
override fun isInitialized(): Boolean = binding != null
override val value: T
get() = binding ?: bind<T>(getContentView()).also {
it.lifecycleOwner = this@dataBinding
binding = it
}

private fun FragmentActivity.getContentView(): View {
return checkNotNull(findViewById<ViewGroup>(android.R.id.content).getChildAt(0)) {
"Call setContentView or Use Activity's secondary constructor passing layout res id."
}
fun <T : ViewDataBinding> FragmentActivity.dataBinding(): Lazy<T> = lazy(LazyThreadSafetyMode.NONE) {
bind<T>(getContentView()).also {
it.lifecycleOwner = this@dataBinding
}
}

private fun <T : ViewDataBinding> bind(view: View): T = DataBindingUtil.bind(view)!!
private fun <T : ViewDataBinding> bind(view: View): T = DataBindingUtil.bind(view)!!
private fun FragmentActivity.getContentView(): View {
return checkNotNull(findViewById<ViewGroup>(android.R.id.content).getChildAt(0)) {
"Call setContentView or Use Activity's secondary constructor passing layout res id."
}
}

0 comments on commit 6a050b5

Please sign in to comment.