База данных комнат в библиотеке Android и объекты и Дао в проекте Android

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

Проект библиотеки будет хранить данные. Проект Android будет иметь объекты и Дао.

Это возможно?

Для этого мне нужно реализовать Room как в проекте Android, так и в библиотеке.

Но могу ли я иметь Дао и объекты в проекте Android и базу данных в библиотеке

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

Ничего из этого еще не реализовано. Я думаю о правильном подходе

Спасибо за ваши предложения

R


person BRDroid    schedule 28.05.2020    source источник
comment
Room DB - это уже очень абстрактная, достаточно абстрактная библиотека-оболочка SQLite.   -  person Taseer    schedule 28.05.2020
comment
Единственная причина, по которой я хочу его разделить, я буду создавать автономную функциональность, которую можно использовать в другом приложении. но я не уверен, как обрабатывать Room в библиотеке и объекты daos в проекте, не уверен, что это даже хорошая идея   -  person BRDroid    schedule 28.05.2020


Ответы (2)



Очень хочется переместить Room в отдельный модуль, поскольку он специфичен для Android и нарушает принцип чистой архитектуры. Вот с чего вы можете начать, по крайней мере, это выглядит похоже: еще один вопрос по стеку и взгляните на все ответы.

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

Случай, когда это имеет смысл.
В моей компании мы сделали следующее. У нас есть несколько связанных продуктов (несколько приложений), которые имеют аналогичную логику, предполагаемую пользователем. Итак, у нас есть библиотека, которая заботится обо всей логике входа пользователя / истечения срока действия токена и т. Д., И предоставляет простой интерфейс для приложения для обработки учетной записи пользователя. Единая кодовая база, полезная при исправлении ошибок. И подключите эту библиотеку к каждому проекту как общий модуль. Но, тем не менее, каждое приложение имеет собственное интернет-соединение и базу данных из-за данных, специфичных для предметной области.
Лучшее для тестирования и архитектуры - переместите всю логику помещения и интернет-логику в модуль в приложении. Доступ к нему через интерфейсы. Вы можете поделиться этим модулем между приложениями.

person RevakoOA    schedule 28.05.2020
comment
да, имеет смысл, поскольку db будет больше связана с приложением и его объектами, сложно и нецелесообразно перемещать это в отдельную библиотеку - это то, что вы предлагаете правильно - person BRDroid; 28.05.2020