В моем приложении есть опция восстановления, которая считывает файл резервной копии и копирует его в исходный файл sqlite-db.
Кажется, все работает нормально, за исключением того, что после восстановления старый db-файл все еще активен. Если я полностью выключу свое приложение, используя System.exit(0);
, оно загрузит восстановленную базу данных, и все будет работать как положено.
Кажется, что приложение хранит старый db-файл в оперативной памяти, хотя это кажется странным ...
Ниже кода:
File dbFile = new File(DatabaseHelper.DB_PATH + DatabaseHelper.DB_NAME);
if (dbFile.exists()) {
Boolean fileDeleted = dbFile.delete();
Log.i(DatabaseHelper.LOG_TAG, "fileDeleted: " + String.valueOf(fileDeleted));
}
try {
Log.i(DatabaseHelper.LOG_TAG, "myDatabase.isOpen: " + String.valueOf(dbHelper.myDataBase.isOpen()));
dbHelper.cleanup();
Log.i(DatabaseHelper.LOG_TAG, "myDatabase.isOpen: " + String.valueOf(dbHelper.myDataBase.isOpen()));
Boolean newFileCreated = dbFile.createNewFile();
Log.i(DatabaseHelper.LOG_TAG, "newFileCreated: " + String.valueOf(newFileCreated));
FileUtil.copyFile(dbBackupFile, dbFile);
return null;
} catch (IOException e) {
Log.e(DatabaseHelper.LOG_TAG, e.getMessage(), e);
return e.getMessage();
}
Кто-нибудь испытывал то же самое?
Я проверил, открыта ли БД для какой-то активности, но, насколько я вижу, это нигде не так. Все записи журнала показывают ожидаемые / правильные значения ...
Я перепробовал все, поэтому любые предложения / идеи очень ценятся !!
Заранее спасибо.
Greetingz,
Коен Хурельбеке <</p>