Закрытие Android и открытие базы данных SQLite на уровне приложения

StackOverflow https://stackoverflow.com//questions/25020110

Вопрос

У меня есть база данных SQLite, объявленная и сохранена на уровне приложения. Я обрабатываю изменения конфигурации, такие как вращение устройства, поэтому закрытие базы данных, которое я устанавливаю его внутри ondestroy основной активности, но внутри IF (this.isfinish ()).

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

Я не смог найти способ обнаружить самосознание / ondestroy .... на уровне приложения, чтобы закрыть базу данных там. Единственный обходной путь, который я могу сделать, это не закрывать базу данных. Но это может дать мне проблемы, возможно, при попытке открыть его снова на случай, если Android действительно закрыл мое приложение, нет?

Есть ли способ заставить закрыть приложение? (Я думаю, что нет). Есть ли способ обнаружить закрытие приложения, чтобы закрыть базу данных там? Будут ли у вас проблемы, пытаясь открыть не закрытую базу данных, если приложение было закрыто Android? Или Android закрывает базу данных, связанную с приложением, которое он собирается закрыть?

Это было полезно?

Решение

единственный обходной путь, который я могу сделать, это не закрыть базу данных

правильно, и это правильный ответ.

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

нет.

Есть ли способ обнаружить закрытие приложения, чтобы закрыть базу данных там?

нет.

У меня будут проблемы, пытаясь открыть не закрытую базу данных, если приложение было закрыто Android?

нет.

или Android закрывает базу данных, связанную с приложением, которое он собирается закрыть?

нет.

Закрытие базы данных на самом деле не делает все это так много.SQLite является транзакционным;Все ваши операции записи базы данных записываются на диск при выполнении этих транзакций.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top