diff --git a/src/com/android/launcher2/DeleteZone.java b/src/com/android/launcher2/DeleteZone.java index 3a6c63d8b2..4e8b204fb4 100644 --- a/src/com/android/launcher2/DeleteZone.java +++ b/src/com/android/launcher2/DeleteZone.java @@ -116,7 +116,14 @@ public class DeleteZone extends ImageView implements DropTarget, DragController. final LauncherAppWidgetInfo launcherAppWidgetInfo = (LauncherAppWidgetInfo) item; final LauncherAppWidgetHost appWidgetHost = mLauncher.getAppWidgetHost(); if (appWidgetHost != null) { - appWidgetHost.deleteAppWidgetId(launcherAppWidgetInfo.appWidgetId); + final int appWidgetId = launcherAppWidgetInfo.appWidgetId; + // Deleting an app widget ID is a void call but writes to disk before returning + // to the caller... + new Thread("deleteAppWidgetId") { + public void run() { + appWidgetHost.deleteAppWidgetId(launcherAppWidgetInfo.appWidgetId); + } + }.start(); } } LauncherModel.deleteItemFromDatabase(mLauncher, item); diff --git a/src/com/android/launcher2/LauncherModel.java b/src/com/android/launcher2/LauncherModel.java index c1ecf506e0..06fcfb3194 100644 --- a/src/com/android/launcher2/LauncherModel.java +++ b/src/com/android/launcher2/LauncherModel.java @@ -269,8 +269,12 @@ public class LauncherModel extends BroadcastReceiver { */ static void deleteItemFromDatabase(Context context, ItemInfo item) { final ContentResolver cr = context.getContentResolver(); - - cr.delete(LauncherSettings.Favorites.getContentUri(item.id, false), null, null); + final Uri uriToDelete = LauncherSettings.Favorites.getContentUri(item.id, false); + new Thread("deleteItemFromDatabase") { + public void run() { + cr.delete(uriToDelete, null, null); + } + }.start(); } /** diff --git a/src/com/android/launcher2/Workspace.java b/src/com/android/launcher2/Workspace.java index 30b149449f..7761cb3489 100644 --- a/src/com/android/launcher2/Workspace.java +++ b/src/com/android/launcher2/Workspace.java @@ -1345,7 +1345,6 @@ public class Workspace extends ViewGroup implements DropTarget, DragSource, Drag if (Intent.ACTION_MAIN.equals(intent.getAction()) && name != null) { for (String packageName: packageNames) { if (packageName.equals(name.getPackageName())) { - // TODO: This should probably be done on a worker thread LauncherModel.deleteItemFromDatabase(mLauncher, info); childrenToRemove.add(view); } @@ -1367,9 +1366,7 @@ public class Workspace extends ViewGroup implements DropTarget, DragSource, Drag for (String packageName: packageNames) { if (packageName.equals(name.getPackageName())) { toRemove.add(appInfo); - // TODO: This should probably be done on a worker thread - LauncherModel.deleteItemFromDatabase( - mLauncher, appInfo); + LauncherModel.deleteItemFromDatabase(mLauncher, appInfo); removedFromFolder = true; } } @@ -1390,7 +1387,6 @@ public class Workspace extends ViewGroup implements DropTarget, DragSource, Drag if (providerInfo != null) { for (String packageName: packageNames) { if (packageName.equals(providerInfo.packageName)) { - // TODO: This should probably be done on a worker thread LauncherModel.deleteItemFromDatabase(mLauncher, info); childrenToRemove.add(view); } @@ -1403,7 +1399,6 @@ public class Workspace extends ViewGroup implements DropTarget, DragSource, Drag if (provider != null) { for (String packageName: packageNames) { if (packageName.equals(provider.provider.getPackageName())) { - // TODO: This should probably be done on a worker thread LauncherModel.deleteItemFromDatabase(mLauncher, info); childrenToRemove.add(view); }