Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fixed a fragment view leak by using DataBinding-ktx #230

Closed
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
1 change: 1 addition & 0 deletions build.gradle
Expand Up @@ -43,6 +43,7 @@ allprojects {
maven { url 'https://oss.sonatype.org/content/repositories/snapshots/' }
maven { url "https://dl.bintray.com/kotlin/ktor" }
maven { url "https://dl.bintray.com/kotlin/kotlinx" }
maven { url 'https://jitpack.io' }
}
plugins.whenPluginAdded {
if (it.isAndroidApp() || it.isAndroidLibrary() || it.isDynamicFeature()) {
Expand Down
5 changes: 5 additions & 0 deletions buildSrc/src/main/java/dependencies/Dep.kt
Expand Up @@ -222,4 +222,9 @@ object Dep {
object Insetter {
val insetter = "dev.chrisbanes:insetter-ktx:0.2.0"
}

object DataBindingKtx {
val version = "3.0.1"
val dataBindingKtx = "com.github.wada811:DataBinding-ktx:$version"
}
}
2 changes: 2 additions & 0 deletions feature/about/build.gradle
Expand Up @@ -39,6 +39,8 @@ dependencies {

implementation Dep.Coil.coil

implementation Dep.DataBindingKtx.dataBindingKtx

testImplementation project(':corecomponent:androidtestcomponent')
testImplementation Dep.Test.junit
testImplementation Dep.Test.kotlinTestAssertions
Expand Down
Expand Up @@ -6,9 +6,9 @@ import android.view.View
import android.view.ViewGroup
import androidx.core.view.isVisible
import androidx.core.view.updatePadding
import androidx.databinding.DataBindingUtil
import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.LiveData
import com.wada811.databinding.dataBinding
import com.xwray.groupie.GroupAdapter
import com.xwray.groupie.databinding.ViewHolder
import dagger.Module
Expand Down Expand Up @@ -40,7 +40,7 @@ class AboutFragment : DaggerFragment() {
systemViewModelProvider.get()
}

private lateinit var binding: FragmentAboutBinding
private val binding: FragmentAboutBinding by dataBinding(R.layout.fragment_about)

private lateinit var progressTimeLatch: ProgressTimeLatch

Expand All @@ -49,12 +49,6 @@ class AboutFragment : DaggerFragment() {
container: ViewGroup?,
savedInstanceState: Bundle?
): View {
binding = DataBindingUtil.inflate(
inflater,
R.layout.fragment_about,
container,
false
)
return binding.root
}

Expand Down
2 changes: 2 additions & 0 deletions feature/announcement/build.gradle
Expand Up @@ -39,6 +39,8 @@ dependencies {

implementation Dep.Coil.coil

implementation Dep.DataBindingKtx.dataBindingKtx

testImplementation project(':corecomponent:androidtestcomponent')
testImplementation Dep.Test.junit
testImplementation Dep.Test.kotlinTestAssertions
Expand Down
Expand Up @@ -8,11 +8,11 @@ import android.view.View
import android.view.ViewGroup
import androidx.core.view.isVisible
import androidx.core.view.updatePadding
import androidx.databinding.DataBindingUtil
import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.LiveData
import androidx.lifecycle.observe
import androidx.recyclerview.widget.RecyclerView
import com.wada811.databinding.dataBinding
import com.xwray.groupie.GroupAdapter
import com.xwray.groupie.Item
import com.xwray.groupie.databinding.ViewHolder
Expand Down Expand Up @@ -50,20 +50,14 @@ class AnnouncementFragment : DaggerFragment() {
@Inject
lateinit var announcementItemFactory: AnnouncementItem.Factory

private lateinit var binding: FragmentAnnouncementBinding
private val binding: FragmentAnnouncementBinding by dataBinding(R.layout.fragment_announcement)

private lateinit var progressTimeLatch: ProgressTimeLatch

override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
binding = DataBindingUtil.inflate(
inflater,
R.layout.fragment_announcement,
container,
false
)
return binding.root
}

Expand Down
2 changes: 2 additions & 0 deletions feature/contributor/build.gradle
Expand Up @@ -37,6 +37,8 @@ dependencies {

implementation Dep.Coil.coil

implementation Dep.DataBindingKtx.dataBindingKtx

testImplementation Dep.Test.junit
testImplementation Dep.Test.kotlinTestAssertions
testImplementation Dep.MockK.jvm
Expand Down
Expand Up @@ -5,10 +5,10 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.core.view.isVisible
import androidx.databinding.DataBindingUtil
import androidx.fragment.app.Fragment
import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.LiveData
import com.wada811.databinding.dataBinding
import com.xwray.groupie.GroupAdapter
import com.xwray.groupie.databinding.ViewHolder
import dagger.Component
Expand All @@ -28,7 +28,7 @@ import javax.inject.Provider

class ContributorsFragment : Fragment() {

private lateinit var binding: FragmentContributorsBinding
private val binding: FragmentContributorsBinding by dataBinding(R.layout.fragment_contributors)

@Inject lateinit var contributorsFactory: Provider<ContributorsViewModel>
private val contributorsViewModel by assistedViewModels {
Expand All @@ -42,12 +42,6 @@ class ContributorsFragment : Fragment() {
container: ViewGroup?,
savedInstanceState: Bundle?
): View {
binding = DataBindingUtil.inflate(
inflater,
R.layout.fragment_contributors,
container,
false
)
return binding.root
}

Expand Down
2 changes: 2 additions & 0 deletions feature/floormap/build.gradle
Expand Up @@ -24,6 +24,8 @@ dependencies {
compileOnly Dep.Dagger.assistedInjectAnnotations
kapt Dep.Dagger.assistedInjectProcessor

implementation Dep.DataBindingKtx.dataBindingKtx

testImplementation project(':corecomponent:androidtestcomponent')
testImplementation Dep.Test.junit
testImplementation Dep.Test.kotlinTestAssertions
Expand Down
Expand Up @@ -4,9 +4,9 @@ import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.databinding.DataBindingUtil
import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.LiveData
import com.wada811.databinding.dataBinding
import dagger.Module
import dagger.Provides
import dagger.android.support.DaggerFragment
Expand All @@ -17,18 +17,13 @@ import io.github.droidkaigi.confsched2020.floormap.databinding.FragmentFloormapB
// TODO: Apply the floor map UI
class FloorMapFragment : DaggerFragment() {

private lateinit var binding: FragmentFloormapBinding
private val binding: FragmentFloormapBinding by dataBinding(R.layout.fragment_floormap)

override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
binding = DataBindingUtil.inflate(
inflater,
R.layout.fragment_floormap,
container,
false
)
return binding.root
}

Expand Down
2 changes: 2 additions & 0 deletions feature/session/build.gradle
Expand Up @@ -39,6 +39,8 @@ dependencies {

implementation Dep.Coil.coil

implementation Dep.DataBindingKtx.dataBindingKtx

testImplementation project(':corecomponent:androidtestcomponent')
testImplementation Dep.Test.junit
testImplementation Dep.Test.kotlinTestAssertions
Expand Down
Expand Up @@ -6,11 +6,11 @@ import android.view.View
import android.view.ViewGroup
import androidx.core.view.isVisible
import androidx.core.view.updatePadding
import androidx.databinding.DataBindingUtil
import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.LiveData
import androidx.lifecycle.observe
import androidx.transition.TransitionManager
import com.wada811.databinding.dataBinding
import com.xwray.groupie.GroupAdapter
import com.xwray.groupie.databinding.ViewHolder
import dagger.Module
Expand All @@ -33,7 +33,7 @@ import javax.inject.Provider

class BottomSheetDaySessionsFragment : DaggerFragment() {

private lateinit var binding: FragmentBottomSheetSessionsBinding
private val binding: FragmentBottomSheetSessionsBinding by dataBinding(R.layout.fragment_bottom_sheet_sessions)

@Inject
lateinit var sessionsViewModelProvider: Provider<SessionsViewModel>
Expand Down Expand Up @@ -65,12 +65,6 @@ class BottomSheetDaySessionsFragment : DaggerFragment() {
container: ViewGroup?,
savedInstanceState: Bundle?
): View {
binding = DataBindingUtil.inflate(
inflater,
R.layout.fragment_bottom_sheet_sessions,
container,
false
)
return binding.root
}

Expand Down
Expand Up @@ -5,10 +5,10 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.core.view.isVisible
import androidx.databinding.DataBindingUtil
import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.LiveData
import androidx.lifecycle.observe
import com.wada811.databinding.dataBinding
import com.xwray.groupie.GroupAdapter
import com.xwray.groupie.databinding.ViewHolder
import dagger.Module
Expand All @@ -27,7 +27,7 @@ import javax.inject.Provider

class BottomSheetFavoriteSessionsFragment : DaggerFragment() {

private lateinit var binding: FragmentBottomSheetSessionsBinding
private val binding: FragmentBottomSheetSessionsBinding by dataBinding(R.layout.fragment_bottom_sheet_sessions)

@Inject
lateinit var sessionsViewModelProvider: Provider<SessionsViewModel>
Expand All @@ -50,12 +50,6 @@ class BottomSheetFavoriteSessionsFragment : DaggerFragment() {
container: ViewGroup?,
savedInstanceState: Bundle?
): View {
binding = DataBindingUtil.inflate(
inflater,
R.layout.fragment_bottom_sheet_sessions,
container,
false
)
return binding.root
}

Expand Down
Expand Up @@ -8,7 +8,6 @@ import android.view.MenuItem
import android.view.View
import android.view.ViewGroup
import androidx.core.view.isVisible
import androidx.databinding.DataBindingUtil
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentStatePagerAdapter
import androidx.lifecycle.LifecycleOwner
Expand All @@ -18,6 +17,7 @@ import androidx.navigation.fragment.findNavController
import androidx.viewpager2.adapter.FragmentStateAdapter
import com.google.android.material.tabs.TabLayout
import com.google.android.material.tabs.TabLayoutMediator
import com.wada811.databinding.dataBinding
import dagger.Module
import dagger.Provides
import dagger.android.ContributesAndroidInjector
Expand All @@ -37,7 +37,7 @@ import javax.inject.Provider

class MainSessionsFragment : DaggerFragment() {

private lateinit var binding: FragmentMainSessionsBinding
private val binding: FragmentMainSessionsBinding by dataBinding(R.layout.fragment_main_sessions)

@Inject
lateinit var sessionsViewModelProvider: Provider<SessionsViewModel>
Expand All @@ -60,12 +60,6 @@ class MainSessionsFragment : DaggerFragment() {
container: ViewGroup?,
savedInstanceState: Bundle?
): View {
binding = DataBindingUtil.inflate(
inflater,
R.layout.fragment_main_sessions,
container,
false
)
setHasOptionsMenu(true)
return binding.root
}
Expand Down
Expand Up @@ -7,10 +7,10 @@ import android.view.MenuInflater
import android.view.View
import android.view.ViewGroup
import androidx.appcompat.widget.SearchView
import androidx.databinding.DataBindingUtil
import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.LiveData
import androidx.lifecycle.observe
import com.wada811.databinding.dataBinding
import com.xwray.groupie.GroupAdapter
import com.xwray.groupie.databinding.ViewHolder
import dagger.Module
Expand All @@ -32,7 +32,7 @@ import javax.inject.Provider

class SearchSessionsFragment : DaggerFragment() {

private lateinit var binding: FragmentSearchSessionsBinding
private val binding: FragmentSearchSessionsBinding by dataBinding(R.layout.fragment_search_sessions)

@Inject lateinit var searchSessionsModelFactory: SearchSessionsViewModel.Factory
private val searchSessionsViewModel by assistedViewModels {
Expand Down Expand Up @@ -68,12 +68,6 @@ class SearchSessionsFragment : DaggerFragment() {
container: ViewGroup?,
savedInstanceState: Bundle?
): View {
binding = DataBindingUtil.inflate(
inflater,
R.layout.fragment_search_sessions,
container,
false
)
return binding.root
}

Expand Down
Expand Up @@ -7,7 +7,6 @@ import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import androidx.core.view.isVisible
import androidx.databinding.DataBindingUtil
import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.LiveData
import androidx.lifecycle.observe
Expand All @@ -18,6 +17,7 @@ import coil.Coil
import coil.api.load
import coil.transform.CircleCropTransformation
import com.google.android.material.chip.Chip
import com.wada811.databinding.dataBinding
import dagger.Module
import dagger.Provides
import dagger.android.support.DaggerFragment
Expand All @@ -43,7 +43,7 @@ import javax.inject.Provider

class SessionDetailFragment : DaggerFragment() {

private lateinit var binding: FragmentSessionDetailBinding
private val binding: FragmentSessionDetailBinding by dataBinding(R.layout.fragment_session_detail)

@Inject lateinit var systemViewModelFactory: Provider<SystemViewModel>
private val systemViewModel by assistedActivityViewModels {
Expand All @@ -64,12 +64,6 @@ class SessionDetailFragment : DaggerFragment() {
container: ViewGroup?,
savedInstanceState: Bundle?
): View {
binding = DataBindingUtil.inflate(
inflater,
R.layout.fragment_session_detail,
container,
false
)
return binding.root
}

Expand Down