Moving DB creation to background thread
Change-Id: I5404edd8df7160108c230d245f34bf8e24173619
diff --git a/src/com/android/launcher3/LauncherAppState.java b/src/com/android/launcher3/LauncherAppState.java
index 6ce7c5f..0a26109 100644
--- a/src/com/android/launcher3/LauncherAppState.java
+++ b/src/com/android/launcher3/LauncherAppState.java
@@ -65,11 +65,17 @@
return sContext;
}
- public static void setApplicationContext(Context context) {
- if (sContext != null) {
- Log.w(Launcher.TAG, "setApplicationContext called twice! old=" + sContext + " new=" + context);
+ static void setLauncherProvider(LauncherProvider provider) {
+ if (sLauncherProvider != null) {
+ Log.w(Launcher.TAG, "setLauncherProvider called twice! old=" +
+ sLauncherProvider.get() + " new=" + provider);
}
- sContext = context.getApplicationContext();
+ sLauncherProvider = new WeakReference<>(provider);
+
+ // The content provider exists for the entire duration of the launcher main process and
+ // is the first component to get created. Initializing application context here ensures
+ // that LauncherAppState always exists in the main process.
+ sContext = provider.getContext().getApplicationContext();
}
private LauncherAppState() {
@@ -153,10 +159,6 @@
return mModel;
}
- static void setLauncherProvider(LauncherProvider provider) {
- sLauncherProvider = new WeakReference<LauncherProvider>(provider);
- }
-
public WidgetPreviewLoader getWidgetCache() {
return mWidgetCache;
}