Use viewTreeLifecycleOwner

This commit is contained in:
Mygod
2020-06-01 16:21:49 -04:00
parent fb5283e61a
commit 379c3b226f
7 changed files with 12 additions and 11 deletions

View File

@@ -67,7 +67,7 @@ android {
androidExtensions.isExperimental = true androidExtensions.isExperimental = true
dependencies { dependencies {
val lifecycleVersion = "2.2.0" val lifecycleVersion = "2.3.0-alpha03"
val roomVersion = "2.2.5" val roomVersion = "2.2.5"
coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:1.0.5") coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:1.0.5")
@@ -76,7 +76,7 @@ dependencies {
implementation("androidx.browser:browser:1.2.0") implementation("androidx.browser:browser:1.2.0")
implementation("androidx.core:core-ktx:1.3.0-rc01") implementation("androidx.core:core-ktx:1.3.0-rc01")
implementation("androidx.emoji:emoji:1.1.0-rc01") implementation("androidx.emoji:emoji:1.1.0-rc01")
implementation("androidx.fragment:fragment-ktx:1.2.4") implementation("androidx.fragment:fragment-ktx:1.3.0-alpha05")
implementation("androidx.lifecycle:lifecycle-common-java8:$lifecycleVersion") implementation("androidx.lifecycle:lifecycle-common-java8:$lifecycleVersion")
implementation("androidx.lifecycle:lifecycle-livedata-ktx:$lifecycleVersion") implementation("androidx.lifecycle:lifecycle-livedata-ktx:$lifecycleVersion")
implementation("androidx.lifecycle:lifecycle-runtime-ktx:$lifecycleVersion") implementation("androidx.lifecycle:lifecycle-runtime-ktx:$lifecycleVersion")

View File

@@ -83,7 +83,7 @@ class EBegFragment : AppCompatDialogFragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
dialog!!.setTitle(R.string.settings_misc_donate) dialog!!.setTitle(R.string.settings_misc_donate)
lifecycleScope.launchWhenCreated { viewLifecycleOwner.lifecycleScope.launchWhenCreated {
billingClient.querySkuDetails(SkuDetailsParams.newBuilder().apply { billingClient.querySkuDetails(SkuDetailsParams.newBuilder().apply {
setSkusList(listOf("donate001", "donate002", "donate005", "donate010", "donate020", "donate050", setSkusList(listOf("donate001", "donate002", "donate005", "donate010", "donate020", "donate050",
"donate100", "donate200", "donatemax")) "donate100", "donate200", "donatemax"))

View File

@@ -40,7 +40,7 @@ class MainActivity : AppCompatActivity(), BottomNavigationView.OnNavigationItemS
number = count number = count
} else binding.navigation.removeBadge(R.id.navigation_clients) } else binding.navigation.removeBadge(R.id.navigation_clients)
} }
SmartSnackbar.Register(lifecycle, binding.fragmentHolder) SmartSnackbar.Register(binding.fragmentHolder)
WifiDoubleLock.ActivityListener(this) WifiDoubleLock.ActivityListener(this)
} }

View File

@@ -18,6 +18,7 @@ import androidx.core.os.BuildCompat
import androidx.databinding.BaseObservable import androidx.databinding.BaseObservable
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels import androidx.fragment.app.activityViewModels
import androidx.lifecycle.findViewTreeLifecycleOwner
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.observe import androidx.lifecycle.observe
import androidx.recyclerview.widget.DefaultItemAnimator import androidx.recyclerview.widget.DefaultItemAnimator
@@ -110,7 +111,7 @@ class ClientsFragment : Fragment() {
private inner class ClientViewHolder(val binding: ListitemClientBinding) : RecyclerView.ViewHolder(binding.root), private inner class ClientViewHolder(val binding: ListitemClientBinding) : RecyclerView.ViewHolder(binding.root),
View.OnClickListener, PopupMenu.OnMenuItemClickListener { View.OnClickListener, PopupMenu.OnMenuItemClickListener {
init { init {
binding.lifecycleOwner = this@ClientsFragment binding.lifecycleOwner = binding.root.findViewTreeLifecycleOwner()
binding.root.setOnClickListener(this) binding.root.setOnClickListener(this)
binding.description.movementMethod = LinkMovementMethod.getInstance() binding.description.movementMethod = LinkMovementMethod.getInstance()
} }
@@ -149,7 +150,7 @@ class ClientsFragment : Fragment() {
} }
R.id.stats -> { R.id.stats -> {
binding.client?.let { client -> binding.client?.let { client ->
lifecycleScope.launchWhenCreated { viewLifecycleOwner.lifecycleScope.launchWhenCreated {
withContext(Dispatchers.Unconfined) { withContext(Dispatchers.Unconfined) {
StatsDialogFragment().withArg(StatsArg( StatsDialogFragment().withArg(StatsArg(
client.title.value ?: return@withContext, client.title.value ?: return@withContext,

View File

@@ -140,7 +140,7 @@ sealed class TetherManager(protected val parent: TetheringFragment) : Manager(),
private val tethering = BluetoothTethering(parent.requireContext()) { onTetheringStarted() } private val tethering = BluetoothTethering(parent.requireContext()) { onTetheringStarted() }
init { init {
parent.lifecycle.addObserver(this) parent.viewLifecycleOwner.lifecycle.addObserver(this)
} }
override fun onDestroy(owner: LifecycleOwner) = tethering.close() override fun onDestroy(owner: LifecycleOwner) = tethering.close()

View File

@@ -161,7 +161,7 @@ class TetheringFragment : Fragment(), ServiceConnection, Toolbar.OnMenuItemClick
true true
} }
R.id.configuration_repeater -> { R.id.configuration_repeater -> {
lifecycleScope.launchWhenCreated { viewLifecycleOwner.lifecycleScope.launchWhenCreated {
adapter.repeaterManager.getConfiguration()?.let { config -> adapter.repeaterManager.getConfiguration()?.let { config ->
WifiApDialogFragment().withArg(WifiApDialogFragment.Arg(config, p2pMode = true)).show( WifiApDialogFragment().withArg(WifiApDialogFragment.Arg(config, p2pMode = true)).show(
this@TetheringFragment, CONFIGURE_REPEATER) this@TetheringFragment, CONFIGURE_REPEATER)

View File

@@ -6,8 +6,8 @@ import android.view.View
import android.widget.Toast import android.widget.Toast
import androidx.annotation.StringRes import androidx.annotation.StringRes
import androidx.lifecycle.DefaultLifecycleObserver import androidx.lifecycle.DefaultLifecycleObserver
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleOwner import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.findViewTreeLifecycleOwner
import be.mygod.vpnhotspot.App.Companion.app import be.mygod.vpnhotspot.App.Companion.app
import be.mygod.vpnhotspot.util.readableMessage import be.mygod.vpnhotspot.util.readableMessage
import com.google.android.material.snackbar.Snackbar import com.google.android.material.snackbar.Snackbar
@@ -32,9 +32,9 @@ sealed class SmartSnackbar {
}.readableMessage) }.readableMessage)
} }
class Register(lifecycle: Lifecycle, private val view: View) : DefaultLifecycleObserver { class Register(private val view: View) : DefaultLifecycleObserver {
init { init {
lifecycle.addObserver(this) view.findViewTreeLifecycleOwner()!!.lifecycle.addObserver(this)
} }
override fun onResume(owner: LifecycleOwner) { override fun onResume(owner: LifecycleOwner) {