Fix secure screen option subscription memory leak

This commit is contained in:
arkon
2020-03-09 14:03:47 -04:00
parent 572f58a3a4
commit 022cde2c00
3 changed files with 36 additions and 9 deletions
@@ -7,16 +7,17 @@ import androidx.fragment.app.FragmentActivity
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.data.preference.getOrDefault
import java.util.Date
import rx.Subscription
import uy.kohesive.injekt.injectLazy
object SecureActivityDelegate {
class SecureActivityDelegate(private val activity: FragmentActivity) {
private val preferences by injectLazy<PreferencesHelper>()
var locked: Boolean = true
private var secureScreenSubscription: Subscription? = null
fun onCreate(activity: FragmentActivity) {
preferences.secureScreen().asObservable()
fun onCreate() {
secureScreenSubscription = preferences.secureScreen().asObservable()
.subscribe {
if (it) {
activity.window.setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE)
@@ -26,7 +27,7 @@ object SecureActivityDelegate {
}
}
fun onResume(activity: FragmentActivity) {
fun onResume() {
val lockApp = preferences.useBiometricLock().getOrDefault()
if (lockApp && BiometricManager.from(activity).canAuthenticate() == BiometricManager.BIOMETRIC_SUCCESS) {
if (isAppLocked()) {
@@ -39,9 +40,17 @@ object SecureActivityDelegate {
}
}
fun onDestroy() {
secureScreenSubscription?.unsubscribe()
}
private fun isAppLocked(): Boolean {
return locked &&
(preferences.lockAppAfter().getOrDefault() <= 0 ||
Date().time >= preferences.lastAppUnlock().getOrDefault() + 60 * 1000 * preferences.lockAppAfter().getOrDefault())
}
companion object {
var locked: Boolean = true
}
}