Fixing nullpointer when creating new DB
LauncherProvider is not ready until the DBHelper is created
Change-Id: Iabd61005892f15fd4a31d882100d87df2b2a7b85
diff --git a/src/com/android/launcher3/LauncherProvider.java b/src/com/android/launcher3/LauncherProvider.java
index 71ddb1a..4df92af 100644
--- a/src/com/android/launcher3/LauncherProvider.java
+++ b/src/com/android/launcher3/LauncherProvider.java
@@ -99,6 +99,7 @@
public void setLauncherProviderChangeListener(LauncherProviderChangeListener listener) {
mListener = listener;
+ mOpenHelper.mListener = mListener;
}
@Override
@@ -270,18 +271,6 @@
}
}
- @Thunk void notifyAppWidgetHostReset() {
- new MainThreadExecutor().execute(new Runnable() {
-
- @Override
- public void run() {
- if (mListener != null) {
- mListener.onAppWidgetHostReset();
- }
- }
- });
- }
-
@Thunk static void addModifiedTime(ContentValues values) {
values.put(LauncherSettings.ChangeLogColumns.MODIFIED, System.currentTimeMillis());
}
@@ -429,6 +418,7 @@
SQLiteDatabase.deleteDatabase(dbFile);
}
mOpenHelper = new DatabaseHelper(getContext());
+ mOpenHelper.mListener = mListener;
}
private static class DatabaseHelper extends SQLiteOpenHelper implements LayoutParserCallback {
@@ -439,6 +429,8 @@
private boolean mNewDbCreated = false;
+ @Thunk LauncherProviderChangeListener mListener;
+
DatabaseHelper(Context context) {
super(context, LauncherFiles.LAUNCHER_DB, null, DATABASE_VERSION);
mContext = context;
@@ -508,7 +500,15 @@
* want to re-call {@link AppWidgetHost#startListening()} to ensure
* callbacks are correctly set.
*/
- LauncherAppState.getLauncherProvider().notifyAppWidgetHostReset();
+ new MainThreadExecutor().execute(new Runnable() {
+
+ @Override
+ public void run() {
+ if (mListener != null) {
+ mListener.onAppWidgetHostReset();
+ }
+ }
+ });
}
// Fresh and clean launcher DB.