Invalidate stale BgDataModel when predictions are disabled am: e47896cb91

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Launcher3/+/12193276

Change-Id: I840a11ea2986d9e7c0d95ec7c5ad7e738e2dd0a7
This commit is contained in:
Samuel Fufa
2020-07-20 21:26:20 +00:00
committed by Automerger Merge Worker
@@ -14,6 +14,7 @@
* limitations under the License.
*/
package com.android.launcher3.model;
import static com.android.launcher3.util.Executors.MODEL_EXECUTOR;
import android.content.ComponentName;
@@ -24,6 +25,7 @@ import android.os.UserHandle;
import androidx.annotation.AnyThread;
import androidx.annotation.WorkerThread;
import com.android.launcher3.LauncherAppState;
import com.android.launcher3.R;
import com.android.launcher3.Utilities;
import com.android.launcher3.pm.UserCache;
@@ -64,18 +66,28 @@ public class PredictionModel implements ResourceBasedOverride {
mUserCache = UserCache.INSTANCE.get(mContext);
}
/**
* Formats and stores a list of component key in device preferences.
*/
@AnyThread
public void cachePredictionComponentKeys(List<ComponentKey> componentKeys) {
MODEL_EXECUTOR.execute(() -> {
LauncherAppState appState = LauncherAppState.getInstance(mContext);
StringBuilder builder = new StringBuilder();
int count = Math.min(componentKeys.size(), MAX_CACHE_ITEMS);
for (int i = 0; i < count; i++) {
builder.append(serializeComponentKeyToString(componentKeys.get(i)));
builder.append("\n");
}
if (componentKeys.isEmpty() /* should invalidate loader items */) {
appState.getModel().enqueueModelUpdateTask(new BaseModelUpdateTask() {
@Override
public void execute(LauncherAppState app, BgDataModel model, AllAppsList apps) {
model.cachedPredictedItems.clear();
}
});
}
mDevicePrefs.edit().putString(CACHED_ITEMS_KEY, builder.toString()).apply();
});
}