From 73013bf94f49ffbacba2b8300f6a2dd4eeebbd13 Mon Sep 17 00:00:00 2001 From: Brad Fitzpatrick Date: Tue, 14 Sep 2010 12:15:32 -0700 Subject: Make LauncherModel.deleteItemFromDatabase write to disk async. Fixes a bunch of StrictMode violations and removes TODOs. Change-Id: I886bd071d4a8336c228d29c517a8ffc5223c0623 --- src/com/android/launcher2/DeleteZone.java | 9 ++++++++- src/com/android/launcher2/LauncherModel.java | 8 ++++++-- src/com/android/launcher2/Workspace.java | 7 +------ 3 files changed, 15 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/com/android/launcher2/DeleteZone.java b/src/com/android/launcher2/DeleteZone.java index 3a6c63d8b..4e8b204fb 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 c1ecf506e..06fcfb319 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 30b149449..7761cb348 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); } -- cgit v1.2.3