Improving LauncherModel performance

- no longer reloading DB on each configuration change
- adding/updating items in DB on background thread

Change-Id: Ie140f31608df84b0ca2d45eb7a210a8a3b36b52f
diff --git a/src/com/android/launcher2/LauncherApplication.java b/src/com/android/launcher2/LauncherApplication.java
index 68b1644..db3a4cb 100644
--- a/src/com/android/launcher2/LauncherApplication.java
+++ b/src/com/android/launcher2/LauncherApplication.java
@@ -24,11 +24,14 @@
 import android.database.ContentObserver;
 import android.os.Handler;
 
+import java.lang.ref.WeakReference;
+
 public class LauncherApplication extends Application {
     public LauncherModel mModel;
     public IconCache mIconCache;
     private static boolean sIsScreenLarge;
     private static float sScreenDensity;
+    WeakReference<LauncherProvider> mLauncherProvider;
 
     @Override
     public void onCreate() {
@@ -97,6 +100,14 @@
         return mModel;
     }
 
+    void setLauncherProvider(LauncherProvider provider) {
+        mLauncherProvider = new WeakReference<LauncherProvider>(provider);
+    }
+
+    LauncherProvider getLauncherProvider() {
+        return mLauncherProvider.get();
+    }
+
     public static boolean isScreenLarge() {
         return sIsScreenLarge;
     }