Закрытие Android и открытие базы данных SQLite на уровне приложения
-
21-12-2019 - |
Вопрос
У меня есть база данных SQLite, объявленная и сохранена на уровне приложения. Я обрабатываю изменения конфигурации, такие как вращение устройства, поэтому закрытие базы данных, которое я устанавливаю его внутри ondestroy основной активности, но внутри IF (this.isfinish ()).
Проблема, которую у меня есть, это то, что если только после закрытия приложения я стараюсь снова запустить его, он вылетает, говорит мне, что он пытался открыть уже закрытую базу данных. В следующий раз он будет запущен правильно. Я думаю, это потому, что Android никогда не закрыл приложение, потому что не было необходимости, и это все еще в фоновом режиме.
Я не смог найти способ обнаружить самосознание / ondestroy .... на уровне приложения, чтобы закрыть базу данных там. Единственный обходной путь, который я могу сделать, это не закрывать базу данных. Но это может дать мне проблемы, возможно, при попытке открыть его снова на случай, если Android действительно закрыл мое приложение, нет?
Есть ли способ заставить закрыть приложение? (Я думаю, что нет). Есть ли способ обнаружить закрытие приложения, чтобы закрыть базу данных там? Будут ли у вас проблемы, пытаясь открыть не закрытую базу данных, если приложение было закрыто Android? Или Android закрывает базу данных, связанную с приложением, которое он собирается закрыть?
Решение
единственный обходной путь, который я могу сделать, это не закрыть базу данных
правильно, и это правильный ответ.
Но это может дать мне проблемы, возможно, при попытке открыть его снова на случай, если Android действительно закрыл мое приложение, нет?
нет.
Есть ли способ обнаружить закрытие приложения, чтобы закрыть базу данных там?
нет.
У меня будут проблемы, пытаясь открыть не закрытую базу данных, если приложение было закрыто Android?
нет.
или Android закрывает базу данных, связанную с приложением, которое он собирается закрыть?
нет.
Закрытие базы данных на самом деле не делает все это так много.SQLite является транзакционным;Все ваши операции записи базы данных записываются на диск при выполнении этих транзакций.