GetWritableDatabase () VS getReadableDatabase ()

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

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

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

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

Solutions Collecting From Web of "GetWritableDatabase () VS getReadableDatabase ()"

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

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

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

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

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

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

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

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

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

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