Improve lifecycle of ZenModeFragment & friends
* Don't keep Settings observers longer than start-stop. * Only call updateState() once on controllers during create->start->resume. * Remove some duplicate controller update methods from ZenModesFragmentBase (we can directly call DashboardFragment's). * Don't update controllers if unrelated modes were changed. * Extract ZenSettingsObserver for use in the link tile later. * Add tests. Fixes: 353946788 Test: atest com.android.settings.notification.modes Flag: android.app.modes_ui Change-Id: I64b51714d699b5c3a592a76fcb615d2999998829
This commit is contained in:
@@ -18,6 +18,7 @@ package com.android.settings.notification.modes;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.preference.Preference;
|
||||
import androidx.preference.PreferenceScreen;
|
||||
@@ -49,12 +50,12 @@ public class ManualDurationPreferenceController extends AbstractZenModePreferenc
|
||||
return zenMode.isManualDnd();
|
||||
}
|
||||
|
||||
// Called by parent fragment onAttach().
|
||||
// Called by parent fragment onStart().
|
||||
void registerSettingsObserver() {
|
||||
mSettingsObserver.register();
|
||||
}
|
||||
|
||||
// Called by parent fragment onDetach().
|
||||
// Called by parent fragment onStop().
|
||||
void unregisterSettingsObserver() {
|
||||
mSettingsObserver.unregister();
|
||||
}
|
||||
@@ -69,7 +70,7 @@ public class ManualDurationPreferenceController extends AbstractZenModePreferenc
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateState(Preference preference, ZenMode unusedZenMode) {
|
||||
public void updateState(Preference preference, @NonNull ZenMode unusedZenMode) {
|
||||
// This controller is a link between a Settings value (ZEN_DURATION) and the manual DND
|
||||
// mode. The status of the zen mode object itself doesn't affect the preference
|
||||
// value, as that comes from settings; that value from settings will determine the
|
||||
|
||||
Reference in New Issue
Block a user