Компоненты архитектуры Android: ViewModel/ Репозиторий против привязки к Сервису /IntentService

Я хочу реализовать / реорганизовать приложение в соответствии с концепцией компонентов архитектуры Android, см. https://developer.android.com/jetpack/docs/guide

В этой теме Компоненты архитектуры Android ViewModel - связь с Service / IntentService, я нашел очень хороший ответ на архитектурную проблему, см. /questions/23156010/komponentyi-arhitekturyi-android-viewmodel-svyaz-s-servisom-intentservice/23156026#23156026

Но я хочу спросить, как связать сервис из репозитория, потому что у нас здесь нет ни контекста, ни активности. Чтобы было ясно, вопрос заключается в том, как объединить обе концепции.

Какова моя ситуация?

Мне нужно иметь связанный сервис (см. https://developer.android.com/guide/components/bound-services), который поставляется третьей стороной как библиотека (давайте назовем этот "SDK третьей стороны"). Этот "сторонний SDK" будет выполнять некоторые асинхронные действия при подключении Bluetooth к некоторому внешнему оборудованию, поэтому он работает как более или менее постоянный фоновый сервис. Тем не менее, он реализован как сервис (intentservice, таким образом, деятельность может быть связана с), и мы должны получать события путем реализации пользовательского интерфейса прослушивателя событий.

Что я хочу сделать?

Я хотел бы также использовать компоненты архитектуры. Я определил View и ViewModel и хотел бы использовать хранилище как "Dagger2 Singleton", которое обеспечивает локальное хранилище данных, а также вызовы веб-служб, см. https://developer.android.com/jetpack/docs/guide

Мое первое намерение состояло в том, чтобы я мог обрабатывать "сторонний SDK" также в качестве некоего асинхронного квази-удаленного источника данных, и, таким образом, хранилище также должно связываться с этим "сторонним SDK".

К сожалению, нам обычно требуется следующий код для привязки фоновой службы к операции:

Intent csIntent = new Intent(XXX, ThirdPartyService.class);
YYY.bindService(csIntent, <instance of ServiceConnection>, Context.BIND_AUTO_CREATE);

где XXX и YYY - контекст и активность (но оба не должны появляться в репозитории!)

В чем проблема?

Как следует изменить эту концепцию привязки фоновой службы, ориентированной на активность, в соответствии с https://developer.android.com/guide/components/bound-services, если я хочу получить доступ к этой фоновой службе из "репозитория компонентов архитектуры", который реализовано как dagger2 @Singleton в соответствии с https://developer.android.com/jetpack/docs/guide

К сожалению, единственный полуофициальный документ, который я нашел для этой проблемы, заявляет, что демо "должно" быть сделано (но билет был закрыт): https://github.com/googlesamples/android-architecture-components/issues/20

Спасибо за любые советы, как объединить обе концепции

0 ответов

Другие вопросы по тегам