Minor improvements on LocalPreferences.

BUG: 30900628
Change-Id: I09ee88152fbcefd0a301e52599e1c71e2f96557d
(cherry picked from commit da1fc0a9c23697cc255efdccc47862bd1277da3f)
diff --git a/src/com/android/documentsui/LocalPreferences.java b/src/com/android/documentsui/LocalPreferences.java
index 32d0082..b3db037 100644
--- a/src/com/android/documentsui/LocalPreferences.java
+++ b/src/com/android/documentsui/LocalPreferences.java
@@ -22,6 +22,7 @@
 import android.annotation.Nullable;
 import android.content.Context;
 import android.content.SharedPreferences;
+import android.content.SharedPreferences.Editor;
 import android.os.UserHandle;
 import android.preference.PreferenceManager;
 
@@ -84,6 +85,11 @@
     @Retention(RetentionPolicy.SOURCE)
     public @interface PermissionStatus {}
 
+    /**
+     * Clears all preferences associated with a given package.
+     *
+     * <p>Typically called when a package is removed or when user asked to clear its data.
+     */
     static void clearPackagePreferences(Context context, String packageName) {
         clearScopedAccessPreferences(context, packageName);
     }
@@ -115,11 +121,18 @@
     private static void clearScopedAccessPreferences(Context context, String packageName) {
         final String keySubstring = "|" + packageName + "|";
         final SharedPreferences prefs = getPrefs(context);
+        Editor editor = null;
         for (final String key : prefs.getAll().keySet()) {
             if (key.contains(keySubstring)) {
-                prefs.edit().remove(key).apply();
+                if (editor == null) {
+                    editor = prefs.edit();
+                }
+                editor.remove(key);
             }
         }
+        if (editor != null) {
+            editor.apply();
+        }
     }
 
     private static String getScopedAccessDenialsKey(String packageName, String uuid,