From 2af5588692df1c59522f7bf86f1326655d76b97e Mon Sep 17 00:00:00 2001 From: Chaohui Wang Date: Wed, 25 May 2022 09:37:10 +0800 Subject: [PATCH] Fix unable to toggle off Pause app activity The "Pause app activity if unused" SwitchPreference under App info page. Currently, the preference controller updates the UI state in the onOpChanged(), which is unnecessary and is called in another non-UI thread. Not updating state in onOpChanged() to fix. Note: This controller implements the LifecycleObserver to handle lifecycle related logic, but it's actually a no-op before change If9e48e44267de8e89a5e8f45d256719130936320. So it used to work fine without the OnOpChangedListener, we can remove it now. Fix: 227762370 Test: manual Change-Id: I33f1f55a706407d7b409c3544f9889c45855b34d --- ...HibernationSwitchPreferenceController.java | 28 +------------------ 1 file changed, 1 insertion(+), 27 deletions(-) diff --git a/src/com/android/settings/applications/appinfo/HibernationSwitchPreferenceController.java b/src/com/android/settings/applications/appinfo/HibernationSwitchPreferenceController.java index f0b332904de..e3c577b189e 100644 --- a/src/com/android/settings/applications/appinfo/HibernationSwitchPreferenceController.java +++ b/src/com/android/settings/applications/appinfo/HibernationSwitchPreferenceController.java @@ -33,13 +33,9 @@ import android.content.Context; import android.content.pm.PackageManager; import android.permission.PermissionControllerManager; import android.provider.DeviceConfig; -import android.text.TextUtils; import android.util.Slog; import androidx.annotation.NonNull; -import androidx.lifecycle.Lifecycle; -import androidx.lifecycle.LifecycleObserver; -import androidx.lifecycle.OnLifecycleEvent; import androidx.preference.Preference; import androidx.preference.SwitchPreference; @@ -49,8 +45,7 @@ import com.google.common.annotations.VisibleForTesting; * A PreferenceController handling the logic for exempting hibernation of app */ public final class HibernationSwitchPreferenceController extends AppInfoPreferenceControllerBase - implements LifecycleObserver, AppOpsManager.OnOpChangedListener, - Preference.OnPreferenceChangeListener { + implements Preference.OnPreferenceChangeListener { private static final String TAG = "HibernationSwitchPrefController"; private String mPackageName; private final AppOpsManager mAppOpsManager; @@ -69,19 +64,6 @@ public final class HibernationSwitchPreferenceController extends AppInfoPreferen mPermissionControllerManager = context.getSystemService(PermissionControllerManager.class); } - @OnLifecycleEvent(Lifecycle.Event.ON_RESUME) - public void onResume() { - if (mIsPackageSet) { - mAppOpsManager.startWatchingMode( - OPSTR_AUTO_REVOKE_PERMISSIONS_IF_UNUSED, mPackageName, this); - } - } - - @OnLifecycleEvent(Lifecycle.Event.ON_PAUSE) - public void onPause() { - mAppOpsManager.stopWatchingMode(this); - } - @Override public int getAvailabilityStatus() { return isHibernationEnabled() && mIsPackageSet ? AVAILABLE : CONDITIONALLY_UNAVAILABLE; @@ -148,14 +130,6 @@ public final class HibernationSwitchPreferenceController extends AppInfoPreferen return mode == MODE_DEFAULT ? mIsPackageExemptByDefault : mode != MODE_ALLOWED; } - @Override - public void onOpChanged(String op, String packageName) { - if (OPSTR_AUTO_REVOKE_PERMISSIONS_IF_UNUSED.equals(op) - && TextUtils.equals(mPackageName, packageName)) { - updateState(mPreference); - } - } - @Override public boolean onPreferenceChange(Preference preference, Object isChecked) { try {