2011-05-03 54 views
0

假设我有一个应用程序,其中有一个服务在循环中运行,此服务是由意向启动的。然后我有另一个应用程序(相同,但具有不同的AppID)想要启动相同的服务,而主要服务仍在运行。意图如何处理? (注意:我希望这两个服务同时运行...)intents如何处理同一类型的多个服务或类?

我在寻找一个可以理解的答案,它解释了它后面的“如何”,而不是那么多:“好吧,这段代码需要照顾那个!”。如果你的回答不适合我的例子,这是没有问题的,因为我仍然非常新,我的问题可能会以奇怪的(甚至是愚蠢的)方式被问到,我事前道歉。

谢谢! - Bobby

回答

0

服务必须在AndroidManifest.xml中声明:这指定了Service类。您可以使用明确的Intent(指定服务类(以及可选的组件名称))或使用与将与服务关联的IntentFilter匹配的Intent来启动服务。

情况1使用明确的意图。如果只有1个应用程序将该类注册为服务,那么在第二个应用程序中,您将不得不使用带有ComponentName的Intent,该组件名将启动第一个应用程序的服务副本。在这种情况下,该服务类只有一个实例处于活动状态。如果两个应用都将该类注册为服务,则您的意图将启动该服务类的第二个实例。

案例2使用IntentFilter。如果两个Service声明都使用相同的IntentFilter,那么IntentFilter的优先级就会启动:具有更高优先级的Service声明将被触发,并且基本上总是会获胜,因此您将只能运行该Service类的一个实例。如果这两个服务声明具有相同的优先级,那么它将被使用。

在任何情况下,任何情况下(对于任何1个服务声明)将会随时运行该服务的至多一个副本。您可以通过“远程”流程声明发疯,但这只是我想的。

+0

非常好的答案,谢谢Femi,这让很多事情变得清晰!干杯! :d – BobbyTee 2011-05-03 18:18:18

相关问题