首先我想说两件事。首先是,如果这个问题已经被问到,我很抱歉,我已经搜索了围绕这个主题的类似问题,但无法找到解决方案。其次,对于冗长的问题抱歉,请让我知道任何错误,我一定会做出适当的修改:)。Android共享服务?
我对Android开发相对较新(约2个月),所以请原谅我的无知。我的问题是关于android服务。
我的问题是如下,我创建了以下三个应用领域:
- 其中包含一个小的测试服务(为myService)一个Android库。
- 有权访问android库的应用程序(TestApplicationOne)。
- 另一个应用程序(TestApplicationTwo)也可以访问android库。
我目前的解决方案的工作原理如下,TestApplicationOne引用自定义库,并使用该库连接到通过bindService()方法服务(为myService)。连接成功后,应用程序将自己添加到位于myService内的观察员集合中。每次服务需要广播消息时,都会通知此集合中的每个对象。
运行时,上述解决方案似乎工作正常。但是,我现在有另一个应用程序(TestApplicationTwo),它也想使用与上面相同的服务。 TestApplicationTwo的实现是针对第一个应用程序的相同工作原理/规范(TestApplicationOne)创建的。
我遇到的问题是,当服务在任一应用程序中启动时,其他应用程序不会收到任何事件通知。
我试图实现几种方法来解决这个问题。比如使用Singleton模式来保留单个实例,但问题似乎仍然存在。我对此的唯一理解是,每次启动应用程序时,都会创建一个新的库实例。因此,TestApplicationOne中引用的库与TestApplicationTwo中引用的库不同,并且因此未被通知。
有没有人在这个问题上有任何经验?或者可以想出任何可能的解决方案?
非常感谢您提前给予任何帮助。
约翰
钝,但答案都是一样的。感谢您的帮助。成品只会由我个人使用,所以带有意向过滤器的导出解决方案看起来是一种可行的方法。我会进一步研究这个建议,并用我选择的方法更新这个问题。再次感谢您的帮助。 – JohnHodkinson 2011-06-01 17:07:28
我很惊讶你不提及分享一个过程。也许答案已过时? – dcow 2014-09-17 06:21:16
@dcow:最好的情况是,如果生产场景表示这两个应用程序由相同的签名密钥签名,那么这就行得通了,而且这个问题还不清楚。其次,我真诚地希望你描述的场景仍然涉及单独的虚拟机(只是在一个进程中),在这种情况下,它不会有帮助。两个应用程序在同一个进程中共享同一个虚拟机将会产生问题,因为如果没有其他的类路径冲突。 – CommonsWare 2014-09-17 10:38:16