我想将应用程序实现/重构为Android Architecture Components概念,请参阅https://developer.android.com/jetpack/docs/guide
在本主题Android体系结构组件ViewModel-与Service / IntentService的通信中,我找到了关于体系结构问题的很好的答案,请参阅/sf/answers/3271530251/
但我想问一下,如何从存储库绑定服务,因为我们在这里既没有上下文也没有活动。要明确地说,问题在于如何合并这两个概念。
我现在是什么情况
我需要具有boundService(请参阅https://developer.android.com/guide/components/bound-services),该服务来自第三方作为库(我们称其为“第三方SDK”)。这个“第三方SDK”将在与某些外部硬件的蓝牙连接上做一些异步工作,因此它作为或多或少的永久后台服务运行。但是,将其实现为服务(意图服务,因此活动可以绑定到服务),并且我们必须通过实现自定义事件侦听器接口来接收事件。
我要怎么办
我也想使用架构组件。我定义了View和ViewModel,我想使用一个存储库作为“ Dagger2 Singleton”,该存储库提供本地存储以及Web服务调用的数据形式,请参阅https://developer.android.com/jetpack/docs/guide#fetch -数据
我的初衷是,我也可以将“第三方第三方SDK”作为某种形式的异步准远程数据源来处理,因此,存储库也应绑定到“第三方第三方SDK”。
不幸的是,我们通常需要以下代码将后台服务绑定到活动:
Intent csIntent = new Intent(XXX, ThirdPartyService.class);
YYY.bindService(csIntent, <instance of ServiceConnection>, Context.BIND_AUTO_CREATE);
Run Code Online (Sandbox Code Playgroud)
其中XXX和YYY是上下文和活动(但不应同时出现在存储库中!)
问题是什么?
如果要从“架构组件存储库”访问该后台服务,必须如何根据https://developer.android.com/guide/components/bound-services修改以活动为中心的后台服务绑定的概念根据https://developer.android.com/jetpack/docs/guide#manage-dependencies实现为dagger2 @Singleton
不幸的是,我发现此问题的唯一半官方文件指出“应”进行演示(但票证已关闭):https : //github.com/googlesamples/android-architecture-components/issues/20
感谢您提供任何有关如何合并这两个概念的提示
android mvvm bindservice android-viewmodel android-architecture-components
我刚刚开始使用kotlin在android中使用MVVM。我创建了一个仅获取用户位置的Android服务。该服务在后台不断运行,并使用FusedLocationApi来获取位置。我一直在阅读有关在MVVM中使用后台服务的文章。我发现最有帮助的文章是此Android Service MVVM通信。它说您必须在android服务和视图模型进行通信时使用存储库。但我也发现了一些文章,指出不要在View Model中使用Android Framework类(不要在View Model中使用Android类)。我完全困惑您如何将MVVM中的活动与Android服务进行通信。我们要么为此使用存储库,要么如何实现它。
任何帮助将不胜感激,