Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4a3586f3 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Fix for Top Dogfood Backup/Restore issue." into main

parents 2952ee79 24af7881
Loading
Loading
Loading
Loading
+19 −7
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@ import android.content.res.Resources;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.database.sqlite.SQLiteReadOnlyDatabaseException;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.BitmapFactory;
@@ -187,6 +188,7 @@ public abstract class BaseIconCache {
    }

    private synchronized void updateIconParamsBg(final int iconDpi, final int iconPixelSize) {
        try {
            mIconDpi = iconDpi;
            mDefaultIcon = null;
            mUserFlagOpMap.clear();
@@ -194,6 +196,16 @@ public abstract class BaseIconCache {
            mIconDb.close();
            mIconDb = new IconDB(mContext, mDbFileName, iconPixelSize);
            mCache.clear();
        } catch (SQLiteReadOnlyDatabaseException e) {
            // This is known to happen during repeated backup and restores, if the Launcher is in
            // restricted mode. When the launcher is loading and the backup restore is being cleared
            // there can be a conflict where one DB is trying to delete the DB file, and the other
            // is attempting to write to it. The effect is that launcher crashes, then the backup /
            // restore process fails, then the user's home screen icons fail to restore. Adding this
            // try / catch will stop the crash, and LoaderTask will sanitize any residual icon data,
            // leading to a completed backup / restore and a better experience for our customers.
            Log.e(TAG, "failed to clear the launcher's icon db or cache.", e);
        }
    }

    @Nullable