diff --git a/android_app/app/src/main/java/com/health/openscale/core/OpenScale.java b/android_app/app/src/main/java/com/health/openscale/core/OpenScale.java index 8f7cc229..a01aff46 100644 --- a/android_app/app/src/main/java/com/health/openscale/core/OpenScale.java +++ b/android_app/app/src/main/java/com/health/openscale/core/OpenScale.java @@ -84,6 +84,26 @@ public class OpenScale { alarmHandler = new AlarmHandler(); btCom = null; fragmentList = new ArrayList<>(); + + reopenDatabase(); + + migrateSQLtoRoom(); + updateScaleData(); + } + + public static OpenScale getInstance(Context context) { + if (instance == null) { + instance = new OpenScale(context); + } + + return instance; + } + + public void reopenDatabase() { + if (appDB != null) { + appDB.close(); + } + appDB = Room.databaseBuilder(context, AppDatabase.class, "openScale.db") .allowMainThreadQueries() .addCallback(new RoomDatabase.Callback() { @@ -97,17 +117,6 @@ public class OpenScale { .build(); measurementDAO = appDB.measurementDAO(); userDAO = appDB.userDAO(); - - migrateSQLtoRoom(); - updateScaleData(); - } - - public static OpenScale getInstance(Context context) { - if (instance == null) { - instance = new OpenScale(context); - } - - return instance; } private void migrateSQLtoRoom() { diff --git a/android_app/app/src/main/java/com/health/openscale/gui/preferences/BackupPreferences.java b/android_app/app/src/main/java/com/health/openscale/gui/preferences/BackupPreferences.java index 3f02b62c..3a852b2e 100644 --- a/android_app/app/src/main/java/com/health/openscale/gui/preferences/BackupPreferences.java +++ b/android_app/app/src/main/java/com/health/openscale/gui/preferences/BackupPreferences.java @@ -119,12 +119,15 @@ public class BackupPreferences extends PreferenceFragment { importBackup("openScale.db", exportDir); - List scaleUserList = OpenScale.getInstance(getActivity().getApplicationContext()).getScaleUserList(); + OpenScale openScale = OpenScale.getInstance(getActivity().getApplicationContext()); + openScale.reopenDatabase(); + + List scaleUserList = openScale.getScaleUserList(); if (!scaleUserList.isEmpty()) { SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity().getApplicationContext()); prefs.edit().putInt("selectedUserId", scaleUserList.get(0).getId()).commit(); - OpenScale.getInstance(getActivity().getApplicationContext()).updateScaleData(); + openScale.updateScaleData(); } return true;