Я ищу способы резервного копирования базы данных моего приложения на телефоне Android. Я знаю, что базы данных SQLite - это просто файлы, поэтому я ожидаю, что смогу просто скопировать файл на SD-карту, если она есть.
Однако я не уверен, как подготовить базу данных / активность к резервному копированию / восстановлению.
При запуске моя основная деятельность считывает записи из одной таблицы в базе данных и отображает их в виде ListView
. Как показано в примере API «Примечания», у меня есть курсор, который автоматически уведомляется об изменениях в этой таблице (ListView
автоматически обновляется при добавлении / удалении / обновлении записей в таблице).
Итак: когда я копирую файл базы данных на SD-карту, у меня не должно возникнуть проблем. Но что, если пользователь хочет восстановить файл базы данных? Я не могу просто скопировать файл обратно в папку данных, могу ли я (РЕДАКТИРОВАТЬ: ... пока представление отображает данные из базы данных и, таким образом, может содержать открытое соединение)?
Что было бы "наилучшей практикой" при реализации резервного копирования / восстановления? Один из подходов, который я рассмотрел:
- Открыть специальную "восстановительную" деятельность
которая не имеет открытой базы данных
соединения
- Звоните
finish()
для
Основная деятельность, чтобы удалить его и закрыть
соединения с базой данных
- Скопировать обратно файл базы данных
- Открыть новый «экземпляр» основного действия
- Звоните
finish()
для "восстановления" активности
Это будет путь? Спасибо за любой совет!