Android:在图书馆项目中使用服务

Android:在图书馆项目中使用服务,android,service,Android,Service,我正在制作一个Android库项目,通过我们的API播放音乐文件。 目前,我正在使用MusicService(带有媒体播放器)来播放音乐文件。MusicService包含一个收音机实例。收音机正在为音乐服务提供音乐文件。因此,收音机可以用来检索SD卡上的文件,通过api调用检索文件。。。使用同一库构建的不同应用程序的收音机类型可能不同 现在,我想知道。。。如果我用同一个库创建两个应用程序。一个应用程序使用带有SD卡的收音机,另一个应用程序使用带有api歌曲的收音机。这两个应用程序是否会相互干扰,

我正在制作一个Android库项目,通过我们的API播放音乐文件。 目前,我正在使用MusicService(带有媒体播放器)来播放音乐文件。MusicService包含一个收音机实例。收音机正在为音乐服务提供音乐文件。因此,收音机可以用来检索SD卡上的文件,通过api调用检索文件。。。使用同一库构建的不同应用程序的收音机类型可能不同

现在,我想知道。。。如果我用同一个库创建两个应用程序。一个应用程序使用带有SD卡的收音机,另一个应用程序使用带有api歌曲的收音机。这两个应用程序是否会相互干扰,同时操作同一个服务

因此,当我第一次从SD卡应用程序开始播放时,点击play,服务开始播放。如果我打开设备上的第二个应用程序并点击Pause,它会暂停从另一个应用程序播放的音乐吗


我知道这听起来很复杂,但我希望我能把我的问题说清楚。

是的,服务会干扰你,除非你启动它们的意图不同。根据我的经验,它们中只有一个会被触发,这可能会显示出你不稳定的行为

您可以做的,也许是在两个应用程序中为您的服务定义单独的操作,并使用隐式意图来启动它们


如果您使用的是明确的意图,我认为它可能有效,但不确定。你观察到什么了吗?

Android库项目被合并到使用它们的每个应用程序的APK中(在构建时)。一旦它们被合并在一起,它们就完全独立,独立的过程,等等(默认情况下)。因此,使用同一库的同一设备上的不同应用程序之间不应存在任何重叠或干扰


这里有一个相关的问题,有一个更深入的答案:

“是的,服务会干扰”我不认为这是真的。他们将使用同一服务的一个单独副本,而不是同一服务(默认情况下,除非您设置流程ID并执行其他一些操作)。但我不确定您何时使用隐式意图启动服务。如果您导出意图以便希望外部应用程序使用它(隐式),并且您在两个应用程序中都这样做(两个应用程序都表示它们服务相同的意图),则是的,您可能会导致冲突,但不会在库项目级别上发生冲突,在使用库项目级别的应用程序上(通过清单中的设置了解您希望如何处理服务以及您支持的意图)。单独的应用程序使用单独的Linux pid运行,句号!因此,它们不能启动同一服务的两个实例。特别是考虑到每个应用程序都将使用图书馆项目的一个单独副本,正如@hans_dc最初在本文中所描述的那样。您的服务寿命在图书馆项目中吗?然后,使用这个lib项目的每个应用程序都将启动自己的服务实例,并且它们不会发生冲突。