Резервное копирование базы данных Android - PullRequest
4 голосов
/ 10 февраля 2010

Я ищу способы резервного копирования базы данных моего приложения на телефоне Android. Я знаю, что базы данных SQLite - это просто файлы, поэтому я ожидаю, что смогу просто скопировать файл на SD-карту, если она есть.

Однако я не уверен, как подготовить базу данных / активность к резервному копированию / восстановлению.

При запуске моя основная деятельность считывает записи из одной таблицы в базе данных и отображает их в виде ListView. Как показано в примере API «Примечания», у меня есть курсор, который автоматически уведомляется об изменениях в этой таблице (ListView автоматически обновляется при добавлении / удалении / обновлении записей в таблице).

Итак: когда я копирую файл базы данных на SD-карту, у меня не должно возникнуть проблем. Но что, если пользователь хочет восстановить файл базы данных? Я не могу просто скопировать файл обратно в папку данных, могу ли я (РЕДАКТИРОВАТЬ: ... пока представление отображает данные из базы данных и, таким образом, может содержать открытое соединение)?

Что было бы "наилучшей практикой" при реализации резервного копирования / восстановления? Один из подходов, который я рассмотрел:

  1. Открыть специальную "восстановительную" деятельность которая не имеет открытой базы данных соединения
  2. Звоните finish() для Основная деятельность, чтобы удалить его и закрыть соединения с базой данных
  3. Скопировать обратно файл базы данных
  4. Открыть новый «экземпляр» основного действия
  5. Звоните finish() для "восстановления" активности

Это будет путь? Спасибо за любой совет!

1 Ответ

5 голосов
/ 10 февраля 2010

Но что, если пользователь захочет восстановить файл базы данных? Я не могу просто скопировать файл обратно в папку данных, не так ли?

Да, вы можете. Поскольку вы можете переместить файл из вашей папки данных в папку на вашей SD-карте, вы можете переместить файл назад с SD-карты в вашу папку данных.

То, что вы предложили сейчас, является хорошим подходом, просто имейте в виду, что вам не нужны открытые объекты базы данных во время резервного копирования / восстановления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...