Use viewTreeLifecycleOwner
This commit is contained in:
@@ -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")
|
||||||
|
|||||||
@@ -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"))
|
||||||
|
|||||||
@@ -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)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
Reference in New Issue
Block a user