Android БД в папке с указанием приложения c против внешней папки - PullRequest
0 голосов
/ 14 января 2020

У меня есть приложение Android, которое записывает данные в БД. Первоначально, когда мы начинали, мы хранили базу данных в папке c, определяемой приложением (что-то вроде /storage/org.domain.app/db/db.sync и так далее). Вещи работали без проблем. Однако проблема заключалась в том, что эта БД стиралась каждый раз, когда мы переустанавливали приложение.

Поэтому мы переместили БД в другую папку вне приложения. (Теперь путь похож на /storage/data/db/db.sync). Теперь, если мы переустановим приложение, у нас останутся старые записи в БД. Тем не менее, теперь чтение и запись в БД намного медленнее.

Я не уверен, что это замедление, потому что объем данных увеличился. Поскольку данные теперь сохраняются при нескольких переустановках.

Я подозреваю, что это также может быть связано с тем, что БД теперь находится в папке, внешней по отношению к приложению. Чтобы исключить это, я настроил БД в папке приложения, указывающей c, и намереваюсь скопировать всю БД из некоторых предыдущих тестов (которые содержат намного больше данных - объем данных, который вызвал замедление доступа к БД). Однако я не могу этого сделать.

Некоторые вопросы: 1. Я не могу получить доступ к папке, в которой установлена ​​БД. Папка создается в режиме Context.MODE_PRIVATE. Поэтому только само приложение может получить к нему доступ. Я попытался изменить его на MODE.WORLD_READABLE. Однако это устарело и выдает исключение при его использовании. Есть ли способ сделать эту папку легко редактируемой?

Я также попытался получить доступ к БД из проводника файлов устройств в Android studio. Я открыл существующую БД (файл db.syn c) и просто скопировал большую БД, которая у меня уже есть. Однако, похоже, что этот метод не позволяет нам копировать или даже отображать более 400 КБ информации. БД у меня составляет около 60-70 МБ. Следовательно, этот подход тоже не сработал. Можно ли как-то отредактировать файл db.syn c?

Не замедляет ли БД, находящаяся в папке, внешней по отношению к приложению? Esp, когда есть слишком много записей. В моем случае определенные операции поиска происходят через локальный кеш и происходят просто так. Тем не менее, мы также должны записать некоторые вещи в БД, и это занимает вечность. Я понял это, добавив журналы таймера в код.

Что-нибудь еще, я мог бы сделать, чтобы определить, вызывает ли проблема путь к БД?

Спасибо, Ананд

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