From 8ff02cac07a9c7fb0f321e93d67ad75cc588fbae Mon Sep 17 00:00:00 2001 From: Michael Jurka Date: Fri, 1 Nov 2013 14:19:27 +0100 Subject: Clear widget preview cache when system is updated Bug: 11325218 --- src/com/android/launcher3/WidgetPreviewLoader.java | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'src/com/android/launcher3/WidgetPreviewLoader.java') diff --git a/src/com/android/launcher3/WidgetPreviewLoader.java b/src/com/android/launcher3/WidgetPreviewLoader.java index 07b4f6f0a..7e1ad6d76 100644 --- a/src/com/android/launcher3/WidgetPreviewLoader.java +++ b/src/com/android/launcher3/WidgetPreviewLoader.java @@ -4,6 +4,7 @@ import android.appwidget.AppWidgetProviderInfo; import android.content.ComponentName; import android.content.ContentValues; import android.content.Context; +import android.content.SharedPreferences; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.content.res.Resources; @@ -100,6 +101,7 @@ class BitmapFactoryOptionsCache extends SoftReferenceThreadLocal>(); mUnusedBitmaps = new ArrayList>(); + + SharedPreferences sp = context.getSharedPreferences( + LauncherAppState.getSharedPreferencesKey(), Context.MODE_PRIVATE); + final String lastVersionName = sp.getString(ANDROID_INCREMENTAL_VERSION_NAME_KEY, null); + final String versionName = android.os.Build.VERSION.INCREMENTAL; + if (!versionName.equals(lastVersionName)) { + // clear all the previews whenever the system version changes, to ensure that previews + // are up-to-date for any apps that might have been updated with the system + clearDb(); + + SharedPreferences.Editor editor = sp.edit(); + editor.putString(ANDROID_INCREMENTAL_VERSION_NAME_KEY, versionName); + editor.commit(); + } } public void setPreviewSize(int previewWidth, int previewHeight, @@ -334,6 +350,12 @@ public class WidgetPreviewLoader { db.insert(CacheDb.TABLE_NAME, null, values); } + private void clearDb() { + SQLiteDatabase db = mDb.getWritableDatabase(); + // Delete everything + db.delete(CacheDb.TABLE_NAME, null, null); + } + public static void removePackageFromDb(final CacheDb cacheDb, final String packageName) { synchronized(sInvalidPackages) { sInvalidPackages.add(packageName); -- cgit v1.2.3