我的问题是,在任何一个应用程序中启动服务时,其他事件都不会通知到另一个应用程序。
那是因为您有两项服务。仅仅因为该服务打包在Android库项目中并不能以某种方式神奇地导致两个不同的应用程序使用同一副本。
例如使用Singleton模式保留单个实例,但问题似乎仍然存在。
这两个应用程序都在各自的进程中运行,并具有它们自己的服务私有副本。
我唯一的理解是,每次启动任一应用程序时,都会创建该库的新实例。
图书馆没有实例。Android库项目不是DLL,它们更类似于静态库。
因此,TestApplicationOne中引用的库与TestApplicationTwo中引用的库不是同一实例,因此不会被通知。
更准确地说,服务
TestApplicationOne于是服务副本与中的副本
TestApplicationTwo。
还是可以想到任何可能的解决方案?
没有两个单独的应用程序。
或者,重新设计您的应用程序,以使只有一个拥有该服务,而另一个使用第一个应用程序中的服务。
或者,在两个应用程序的清单中都禁用该服务,并以稳定
<intent-filter>格式(例如,使用自定义操作字符串)导出该服务。要安装/运行的第一个应用程序用于
PackageManager查看该服务是否存在(例如,它实际上不是第一个应用程序)-看到该服务不存在,它将启用该服务的自己的副本。然后,第二个应用程序经历相同的过程,看到该服务已经存在,并使用远程副本而不是启用自己的副本。
第二个或第三个都不是很容易的,仅仅是因为数据仅存在于一个应用程序中(一个带有服务的应用程序)。因此,如果该应用程序被卸载,则另一个应用程序也将被破坏,即使该应用程序恰好具有可作为禁用组件使用的服务代码。如果应用程序被用户明确描述为具有主要/辅助关系(例如,应用程序及其插件),那么这可能会奏效-
如果应用程序不存在,则用户希望插件不会起作用,例如。当然,在这种情况下,该插件最初不会拥有自己的服务副本,但始终会向主应用程序寻求。



