Освой Android играючи

Сайт Александра Климова

Шкодим

/* Моя кошка замечательно разбирается в программировании. Стоит мне объяснить проблему ей - и все становится ясно. */
John Robbins, Debugging Applications, Microsoft Press, 2000

Room

9-й курс/Закрытая зона

Очень трудно искать в тёмной комнате чёрную кошку. Особенно, если там её нет.

Работа с базой данных SQLite в Android не отличалась удобством, приходилось писать много строчек кода, прежде чем приступить непосредственно к программированию своей логики. Сторонние разработчики раньше предлагали собственные варианты для уменьшения рутинной работы программиста. Наиболее популярными стали такие библиотеки как Realm, ORMLite, GreenDao, DBFlow, Sugar ORM.

Гугл предложила своё решение - Room, который входит в состав Android Jetpack (ранее Android Architecture Components) и является обёрткой над SQLiteOpenHelper, т.е. ORM (Object-relational mapping) между классами Java и SQLite. Вам больше не понадобятся Cursor и Loader.

Если вы давно используете приложение с базой данных, то переходить не стоит, либо сначала изучите документацию по миграции, чтобы не потерять свои данные. А если создаёте приложение с нуля, то Room - ваш выбор. Работать становится проще и приятнее.

Минимальная версия для работы с Room - API 15. Я решил отказаться от Java в примерах и удалил старый код в статье.

Подключим зависимости. Обязательными являются только первые две зависимости для рантайм-библиотеки и аннотаций.


plugins {
    id 'com.android.application'
    id 'kotlin-android'
    id 'kotlin-kapt'
}

dependencies {
    def room_version = "2.5.1"

    implementation "androidx.room:room-runtime:$room_version"
    annotationProcessor "androidx.room:room-compiler:$room_version"
    kapt "androidx.room:room-compiler:$room_version"

    // Необязательно
    // optional - RxJava2 support for Room
    implementation "androidx.room:room-rxjava2:$room_version"

    // optional - RxJava3 support for Room
    implementation "androidx.room:room-rxjava3:$room_version"

    // optional - Guava support for Room, including Optional and ListenableFuture
    implementation "androidx.room:room-guava:$room_version"

    // optional - Test helpers
    testImplementation "androidx.room:room-testing:$room_version"

    // optional - Paging 3 Integration
    implementation "androidx.room:room-paging:2.4.0"
}

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

Дополнительное чтение

Room. Часть вторая

Room. Часть третья

Документация  Android Developers

Реклама