From caa52918f17158ac779b6faab1735e87f0702e48 Mon Sep 17 00:00:00 2001 From: Sunny Goyal Date: Fri, 7 Oct 2016 09:46:49 -0700 Subject: Using add/replace instead of update when updating an entry. Update operation was not including version and updateTime columns leading to a update operation getting called wheneven launcher loads. Bug: 32004297 Change-Id: I5f1793633ce3bb72d5641a82502b3ba8b9cdff7d --- src/com/android/launcher3/IconCache.java | 16 +++++++++------- src/com/android/launcher3/util/SQLiteCacheHelper.java | 16 ---------------- 2 files changed, 9 insertions(+), 23 deletions(-) diff --git a/src/com/android/launcher3/IconCache.java b/src/com/android/launcher3/IconCache.java index d3fb38ede..5c86b6b33 100644 --- a/src/com/android/launcher3/IconCache.java +++ b/src/com/android/launcher3/IconCache.java @@ -772,13 +772,15 @@ public class IconCache { public void run() { if (!mAppsToUpdate.isEmpty()) { LauncherActivityInfoCompat app = mAppsToUpdate.pop(); - String cn = app.getComponentName().flattenToString(); - ContentValues values = updateCacheAndGetContentValues(app, true); - mIconDb.update(values, - IconDB.COLUMN_COMPONENT + " = ? AND " + IconDB.COLUMN_USER + " = ?", - new String[]{cn, Long.toString(mUserSerial)}); - mUpdatedPackages.add(app.getComponentName().getPackageName()); - + String pkg = app.getComponentName().getPackageName(); + PackageInfo info = mPkgInfoMap.get(pkg); + if (info != null) { + synchronized (IconCache.this) { + ContentValues values = updateCacheAndGetContentValues(app, true); + addIconToDB(values, app.getComponentName(), info, mUserSerial); + } + mUpdatedPackages.add(pkg); + } if (mAppsToUpdate.isEmpty() && !mUpdatedPackages.isEmpty()) { // No more app to update. Notify model. LauncherAppState.getInstance().getModel().onPackageIconsUpdated( diff --git a/src/com/android/launcher3/util/SQLiteCacheHelper.java b/src/com/android/launcher3/util/SQLiteCacheHelper.java index c455791b3..d1cfe4264 100644 --- a/src/com/android/launcher3/util/SQLiteCacheHelper.java +++ b/src/com/android/launcher3/util/SQLiteCacheHelper.java @@ -28,22 +28,6 @@ public abstract class SQLiteCacheHelper { mIgnoreWrites = false; } - /** - * @see SQLiteDatabase#update(String, ContentValues, String, String[]) - */ - public void update(ContentValues values, String whereClause, String[] whereArgs) { - if (mIgnoreWrites) { - return; - } - try { - mOpenHelper.getWritableDatabase().update(mTableName, values, whereClause, whereArgs); - } catch (SQLiteFullException e) { - onDiskFull(e); - } catch (SQLiteException e) { - Log.d(TAG, "Ignoring sqlite exception", e); - } - } - /** * @see SQLiteDatabase#delete(String, String, String[]) */ -- cgit v1.2.3