Fix IntentReceiver leaked on Sound & vibration

The root cause is that PreferenceController migrated to Catalyst will be
removed by DashboardFragment and VolumeSeekBarPreferenceController
onPause() is not invoked.

NO_IFTTT=Controller only

Fix: 386162594
Flag: EXEMPT bugfix
Test: atest&manual
Change-Id: I13f8588c8259ed4ddb9895ffc60e209c99c05269
This commit is contained in:
Jacky Wang
2025-01-24 15:24:23 +08:00
parent a7fa6efe8f
commit 402e5bb38b
8 changed files with 62 additions and 106 deletions

View File

@@ -27,17 +27,18 @@ import android.os.Looper;
import android.os.Message;
import android.service.notification.NotificationListenerService;
import androidx.lifecycle.OnLifecycleEvent;
import androidx.annotation.NonNull;
import androidx.lifecycle.DefaultLifecycleObserver;
import androidx.lifecycle.LifecycleOwner;
import com.android.settings.R;
import com.android.settingslib.core.lifecycle.Lifecycle;
/**
* This slider is used to represent ring volume when ring is separated from notification
*/
// LINT.IfChange
public class SeparateRingVolumePreferenceController extends
RingerModeAffectedVolumePreferenceController {
RingerModeAffectedVolumePreferenceController implements DefaultLifecycleObserver {
private static final String KEY_SEPARATE_RING_VOLUME = "separate_ring_volume";
private static final String TAG = "SeparateRingVolumePreferenceController";
@@ -59,10 +60,8 @@ public class SeparateRingVolumePreferenceController extends
updateRingerMode();
}
@OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
@Override
public void onResume() {
super.onResume();
public void onResume(@NonNull LifecycleOwner owner) {
mReceiver.register(true);
updateEffectsSuppressor();
selectPreferenceIconState();
@@ -73,10 +72,8 @@ public class SeparateRingVolumePreferenceController extends
}
}
@OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
@Override
public void onPause() {
super.onPause();
public void onPause(@NonNull LifecycleOwner owner) {
mReceiver.register(false);
}