Освой Android играючи
/* Моя кошка замечательно разбирается в программировании. Стоит мне объяснить проблему ей - и все становится ясно. */
John Robbins, Debugging Applications, Microsoft Press, 2000
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 в примерах и удалил старый код в статье.
Подключим зависимости. Обязательными являются только первые две зависимости для рантайм-библиотеки и аннотаций. Необходимость плагина kapt (выделены жирным) под вопросом. Плагин уже объявили устаревшим и, возможно, в будущем его не придётся подключать, но пока без kapt не заработало.
plugins {
id 'com.android.application'
id 'kotlin-android'
id 'kotlin-kapt'
}
dependencies {
def room_version = "2.4.0"
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"
}
Вы вошли на сайт, как гость.
Необходимо зарегистрироваться, чтобы прочитать статью
Документация Android Developers