commit cdb28fa88c2b4bedbf3de63c783a5d8260636b3e
parent c55071f4ec2e09550268da19033edb73f91f56f4
Author: mcarare <48995920+mcarare@users.noreply.github.com>
Date: Thu, 6 Nov 2025 16:04:53 +0000
Bug 1998699 - Use onResume/onPause for listener registration/unregistration in SecretSettingsFragment. r=android-reviewers,avirvara
This ensures that the listener is only active when the fragment is actually visible to the user, preventing potential crashes or unexpected behavior if a preference change occurs while the fragment is paused but not stopped. A check (`isAdded`) is also added to `onSharedPreferenceChanged` to prevent updates when the fragment is not attached to an activity.
Differential Revision: https://phabricator.services.mozilla.com/D271599
Diffstat:
1 file changed, 11 insertions(+), 2 deletions(-)
diff --git a/mobile/android/focus-android/app/src/main/java/org/mozilla/focus/settings/advanced/SecretSettingsFragment.kt b/mobile/android/focus-android/app/src/main/java/org/mozilla/focus/settings/advanced/SecretSettingsFragment.kt
@@ -22,12 +22,17 @@ class SecretSettingsFragment :
BaseSettingsFragment(),
SharedPreferences.OnSharedPreferenceChangeListener {
- override fun onStart() {
- super.onStart()
+ override fun onResume() {
+ super.onResume()
showToolbar(getString(R.string.preference_secret_settings))
preferenceManager.sharedPreferences?.registerOnSharedPreferenceChangeListener(this)
}
+ override fun onPause() {
+ super.onPause()
+ preferenceManager.sharedPreferences?.unregisterOnSharedPreferenceChangeListener(this)
+ }
+
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
addPreferencesFromResource(R.xml.secret_settings)
@@ -54,6 +59,10 @@ class SecretSettingsFragment :
}
override fun onSharedPreferenceChanged(sharedPreferences: SharedPreferences, key: String?) {
+ if (!isAdded) {
+ return
+ }
+
findPreference<SwitchPreference>(
getPreferenceKey(R.string.pref_key_use_nimbus_preview),
)?.let { nimbusPreviewPref ->