Я открываю базу данных при запуске приложения, но никогда не закрываю ее, так как она постоянно используется.
Не делай этого. Вы, очевидно, игнорируете все ошибки, которые появляются в LogCat, жалуясь на утечку соединений с базой данных.
Какой лучший способ рассказать
база данных, чтобы сбросить все свои изменения в
постоянное хранение?
Это будет сделано автоматически в конце транзакции . По умолчанию каждая отдельная операция SQL (например, вставка) является транзакцией.
Нужно ли просто закрыть его и снова открыть
или есть более эффективный способ?
Вы должны закрыть свою базу данных в какой-то момент (например, onDestroy()
службы, которая является посредником вашей базы данных).
Моя проблема в том, что при тестировании на
телефон, выключив телефон после
количество записей иногда вызывает
базы данных потерять самые последние
обновляется, когда приложение
перезапущен, что, очевидно,
неприемлемо для системы баз данных.
Если вы можете создать пример проекта, который демонстрирует проблему даже после того, как вы правильно закроете соединение с базой данных, опубликуйте его на Android tracker .
Так как я не могу узнать, как захватить
событие закрытия приложения не могу
знать, когда вручную закрыть
базы данных.
Закройте его, когда все действия будут отключены от службы, которая является посредником соединения с базой данных, вызывая метод этой службы onDestroy()
.
Или откройте новое соединение в каждом компоненте, которому требуется доступ к базе данных, и используйте синхронизацию Java, чтобы два потока не пытались одновременно использовать базу данных (при необходимости).