Я хочу реализовать / реорганизовать приложение в соответствии с концепцией компонентов архитектуры Android, см. https://developer.android.com/jetpack/docs/guide
В этой теме Компоненты архитектуры Android ViewModel - связь с Service / IntentService , я нашел очень хороший ответ на архитектурную проблему, см. https://stackoverflow.com/a/46736146/6251815
Но я хочу спросить, как связать сервис из репозитория, потому что у нас здесь нет ни контекста, ни активности.
Чтобы было ясно, вопрос заключается в том, как объединить обе концепции.
Какое у меня положение?
Мне нужно иметь boundService (см. https://developer.android.com/guide/components/bound-services),, который поставляется сторонней организацией в виде библиотеки (давайте назовем это «Сторонний SDK»). Этот «Сторонний SDK» будет выполнять некоторые асинхронные операции по Bluetooth подключение к некоторому внешнему оборудованию, таким образом, оно работает как более или менее постоянный фоновый сервис, однако оно реализовано как сервис (intentservice, таким образом, действие может связываться), и мы должны получать события путем реализации пользовательского интерфейса прослушивателя событий.
Что я хочу сделать?
Я бы тоже хотел использовать компоненты архитектуры. Я определил View и ViewModel и хотел бы использовать репозиторий как Dagger2 Singleton, который обеспечивает локальное хранилище данных, а также вызовы веб-службы, см. https://developer.android.com/jetpack/docs/guide#fetch-data
Мое первое намерение состояло в том, чтобы я мог обрабатывать «сторонний 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#manage-dependencies
К сожалению, единственный полуофициальный документ, который я нашел для этой проблемы, заявляет, что демо «должно» быть сделано (но билет был закрыт): https://github.com/googlesamples/android-architecture-components/issues/20
Спасибо за любые советы, как объединить оба понятия