GetWritableDatabase () VS getReadableDatabase ()

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

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

Для операторов запросов стоит просто использовать getReadableDatabase () или есть очень мало различий в производительности между этими двумя методами.

Спасибо за ваше время.

Они возвращают один и тот же объект, если диск не заполнен, или существует некоторая ошибка разрешения, которая заставляет открыть базу данных в режиме только для чтения. Название немного запутанно, хотя 🙂

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

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

Больше информации здесь .

Если вы посмотрите на NotepadProvider.java в образце проекта NotePad Google, вы увидите, что они используют оба варианта – в зависимости от варианта использования.

Если вы выполняете слишком много операций с базой данных, например запросами, часто обновляясь в некотором случайном порядке, то на самом деле не имеет смысла использовать getReadabledatabase, поскольку ее можно использовать только для чтения значений.

Основываясь на вашем приложении, вы можете судить об использовании. Если вы постоянно читаете значения, вы можете перейти на getreadabledatabase.

Примечание. Несколько раз, когда вы пытаетесь открыть базу данных для записи, используя getwritabledatabase, и если система обнаруживает исключение, например, разрешение на запись, в этом случае система может выдать исключение. В таких случаях вы можете открыть базу данных, используя getreadabledatabase.

Если вы получаете ошибки типа «База данных заблокировано» при реализации параллельных (многопоточных) вызовов db, используйте getWritableDatabase вместо getReadableDatabase.

Открытие базы данных только для чтения должно слегка повысить производительность, поскольку накладные расходы на блокировку будут ниже.

Intereting Posts
Как я могу поддерживать состояние при переключении между вкладками / фрагментами панели действий? IllegalStateException в Google Play Game Service не имеет смысла Обрабатывать onActivityResult на службе Android Junit Testing против стандартного тестирования Junit Закрыть строку состояния при нажатии кнопки уведомления Как использовать ResourceCursorTreeAdapter с расширенными и свернутыми групповыми представлениями в Android? Android Virtual Device Manager: не удается создать AVD Исправлено исключение ClassNotFound, когда класс нагрузки из загруженного файла dex Сначала вы хотите найти фокусное расстояние, а затем расстояние лица, обнаруженное в реальном времени, с помощью opencv android Использование предпочтений списка в Android Сохранить Android SQLite StrictMode для версий с более низкой платформой Android 4.0 – API-уровень 14 против API Google (Google Inc.) – API-уровень 14: В чем разница? Android 4.2.2 adb не может найти устройства Android: можно прикрепить файл к электронной почте без записи на SD?