diff --git a/app/src/main/java/org/mozilla/fenix/settings/SettingsFragment.kt b/app/src/main/java/org/mozilla/fenix/settings/SettingsFragment.kt index 9b53c982b..6bf346cb9 100644 --- a/app/src/main/java/org/mozilla/fenix/settings/SettingsFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/settings/SettingsFragment.kt @@ -6,6 +6,7 @@ package org.mozilla.fenix.settings import android.content.ActivityNotFoundException import android.content.Intent +import android.content.SharedPreferences import android.net.Uri import android.os.Bundle import android.provider.Settings @@ -64,14 +65,8 @@ class SettingsFragment : PreferenceFragmentCompat(), CoroutineScope, AccountObse override val coroutineContext: CoroutineContext get() = Dispatchers.Main + job - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - job = Job() - setupAccountUI() - updateSignInVisibility() - displayAccountErrorIfNecessary() - - preferenceManager.sharedPreferences.registerOnSharedPreferenceChangeListener { sharedPreferences, key -> + private val preferenceChangeListener = + SharedPreferences.OnSharedPreferenceChangeListener { sharedPreferences, key -> try { context?.let { it.components.analytics.metrics.track( @@ -85,6 +80,15 @@ class SettingsFragment : PreferenceFragmentCompat(), CoroutineScope, AccountObse // The setting is not a boolean, not tracked } } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + job = Job() + setupAccountUI() + updateSignInVisibility() + displayAccountErrorIfNecessary() + + preferenceManager.sharedPreferences.registerOnSharedPreferenceChangeListener(preferenceChangeListener) } override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { @@ -212,6 +216,7 @@ class SettingsFragment : PreferenceFragmentCompat(), CoroutineScope, AccountObse override fun onDestroy() { super.onDestroy() job.cancel() + preferenceManager.sharedPreferences.unregisterOnSharedPreferenceChangeListener(preferenceChangeListener) } private fun setupAccountUI() {