给出的库包含几个部分:
它们都依赖于前一个模块(存储依赖于网络,控制器依赖于存储)。大多数功能都在控制器模块中公开。
我的第一个计划是将整个库包装在一个服务中,该服务充当Android世界的适配器。但我发现服务无法获得结果。所以没有(合理的)方法来调用控制器模块中的一些'getStuff'方法。
这样做的'Android方式'是什么?
网络模块必须在后台连续运行,因为它处理一些正在进行的网络事务。 (所以这应该是一项服务,对吗?)存储模块侦听来自网络的事件并自行更新。由于这些是 POJO ,因此存储模块在网络模块中注册。
在应用程序的Android部分,我有几个活动。所有这些都需要访问存储模块。但是没有办法获得它的引用,因为它位于应用程序的Service部分。
我会在Intent响应中包装所有必需的方法,但不能使用结果调用afaik Service Intents。
那么......我如何将服务中的数据转化为活动?
答案 0 :(得分:1)
Android构建工具(以及Eclipse)支持库的概念。就像任何其他Java库一样,库可能有一堆类,其中一些是公共的,消费者可以自由地实例化和调用。工作区中的其他项目引用它并实例化。这种方法有什么问题?
编辑:如果活动在一个应用程序中,默认情况下将共享库代码。一个应用程序中的活动都在同一个进程中运行(除非另外明确配置),因此无论底层代码是什么,它都是共享的。
如果活动是不同的应用程序,那就是另一个问题。您需要共享代码还是数据?如果只是代码,那么Android构建时库仍然有效,只要所有所述应用程序都位于同一工作区内。只有当您需要在某些共享数据之上运行一组应用程序时,您才必须使用IPC机制 - 服务,内容提供商。另一个答案是云。另一种是共享内存(Android支持它)。另一个是SD卡上的某个共享数据存储(因此应用程序沙盒不会妨碍)。
答案 1 :(得分:0)
嗯...也许我应该调查更多的绑定服务。他们似乎完全按我的意愿行事。