Intereting Posts
После сохранения состояния коллапса / расширения для N-уровня или многоуровневого расширенного списка отдельных подгрупп не отображаются Android Cursor.registerContentObserver () Как уменьшить размер веб-виджета динамически в соответствии с его содержимым? Как отключить резервную копию SSLv3 с помощью okhttp Android: как узнать, нажата ли кнопка Как ограничить EditText только указанными символами в android? Утечка памяти Xamarin для Android с простой активностью Java.lang.RuntimeException: отказ от предоставления результата ResultInfo {who = null, request = 1, result = -1, data = intent} для активности Объявления тегов Google Publisher в приложении Android от Cordova Свойства Java и Android SharedPreferences ShouldOverrideUrlLoading не работает / улавливает ссылки при загрузке страницы Создание наблюдаемого без использования Observable.create Пользовательская информация с картами google api v2 Заполнение дискового пространства в устройстве Android Виртуальное устройство, работающее в Genymotion, периодически выходит в автономный режим в ADB

GetWritableDatabase () VS getReadableDatabase ()

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

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

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

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

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

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

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

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

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

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

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

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

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

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