From b5d4eb8bca80e5999a428a0bf80df5e2bba33f58 Mon Sep 17 00:00:00 2001 From: Mygod Date: Mon, 1 Jun 2020 16:29:17 -0400 Subject: [PATCH] Use AtomicReference for SmartSnackbar --- .../java/be/mygod/vpnhotspot/widget/SmartSnackbar.kt | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/mobile/src/main/java/be/mygod/vpnhotspot/widget/SmartSnackbar.kt b/mobile/src/main/java/be/mygod/vpnhotspot/widget/SmartSnackbar.kt index 9e7e9487..148cb766 100644 --- a/mobile/src/main/java/be/mygod/vpnhotspot/widget/SmartSnackbar.kt +++ b/mobile/src/main/java/be/mygod/vpnhotspot/widget/SmartSnackbar.kt @@ -12,15 +12,15 @@ import be.mygod.vpnhotspot.App.Companion.app import be.mygod.vpnhotspot.util.readableMessage import com.google.android.material.snackbar.Snackbar import com.topjohnwu.superuser.NoShellException +import java.util.concurrent.atomic.AtomicReference sealed class SmartSnackbar { companion object { - @SuppressLint("StaticFieldLeak") - private var holder: View? = null + private val holder = AtomicReference() fun make(@StringRes text: Int): SmartSnackbar = make(app.getText(text)) fun make(text: CharSequence = ""): SmartSnackbar { - val holder = holder + val holder = holder.get() return if (holder == null) @SuppressLint("ShowToast") { if (Looper.myLooper() == null) Looper.prepare() ToastWrapper(Toast.makeText(app, text, Toast.LENGTH_LONG)) @@ -37,11 +37,9 @@ sealed class SmartSnackbar { view.findViewTreeLifecycleOwner()!!.lifecycle.addObserver(this) } - override fun onResume(owner: LifecycleOwner) { - holder = view - } + override fun onResume(owner: LifecycleOwner) = holder.set(view) override fun onPause(owner: LifecycleOwner) { - if (holder === view) holder = null + holder.compareAndSet(view, null) } }