Короче говоря, вам не нужно, ЕСЛИ вы используете правильную технику, НО, если вы используете исторически часто используемый метод, как показано ниже, то вам нужно, потому что: -
Причина, по которой this.getReadableDatabase()
/ используется для создания папки базы данных / каталога в каталоге data / data / the_package /.Если каталог базы данных не существует, типичная копия из ресурсов завершается с ошибкой ENOENT.
С SQLite, использующим ведение журнала в режиме журнала по умолчанию, это не проблема, поэтому исторически сложилось так, что обход использования this.getReadableDatabase()
сработало.
Однако в Android Pie (28) SDK был изменен для использования записи по расписанию (WAL) по умолчанию, которая является более поздней и более продвинутой.метод ведения журнала.Этот метод использует два файла с улучшенными мерами безопасности.Один из них заключается в том, что файлы помечены / помечены как принадлежащие базе данных, которая их создала.
Поэтому, когда база данных копируется с использованием старого метода без закрытия двух файлов (файл базы данных с суффиксом -wal и -shm) существует и, скорее всего, будет содержать данные журналов (например, создание любых таблиц).Однако они не будут помечены как скопированные для базы данных, поэтому (я полагаю) база данных воссоздается (поскольку скопированная база данных не может быть открыта из-за несоответствия между базой данных и файлами -shm и -wal) и, следовательно,следующая таблица не найдена ошибка, которая обычно встречается.
При закрытии WAL базы данных / соединения происходит фиксация данных и, следовательно, зачем закрывать базу данных после (немедленно) работы this.getReadableDatabase()
.
Однако правильное исправление состоит в том, чтобы проверить и создать каталог баз данных, если он не существует, используя методы File.Тогда нет необходимости открывать базу данных, которая тратит впустую ресурсы, а также нет необходимости закрывать базу данных, которая также бесполезна для ресурсов (т.е. фактически выполняются зарегистрированные действия и данные записываются на диск и -wal и-shm файлы также читаются и переписываются).