如何阻止多个服务采取一个意图指令?

时间:2011-05-05 17:27:42

标签: java android android-intent

我们有两个应用程序都具有相同的服务来从Web服务中提取消息。为了节省电池电量,我们只需要1个服务就可以为这两个应用程序提供服务,但是如果卸载了application1,我们需要application2的服务来接管这些服务。

我们通过发送隐含意图来查看是否有任何其他应用可以启动并接管。

但是:如果我只是试图停止服务,而不卸载整个应用程序,似乎我们的应用程序都响应启动他们的服务(突然我们从1服务变为0到2)。

**由于这个问题很神秘,请求编辑,下面的一些答案/评论将是上一个问题,对不起那些大惊小怪!

2 个答案:

答案 0 :(得分:0)

通常会有一个弹出窗口询问哪个应用应该使用意图。然后将意图路由到该应用程序。您还可以将一个应用标记为默认值。

也许你需要'重置'这个选择器?

答案 1 :(得分:0)

有一些方法可以检查是否安装了某些应用程序,并且(我相信)有机会发现当前正在运行的内容。但是,我不知道有任何方法可以在Intent中提供条件信息,例如“使用此服务实例”(例如)。

我的方法是创建第三个应用程序,它只包含一个IntentService(即它没有活动,因此没有UI)。然后,我将从其他两个应用程序中删除服务代码,让他们使用IntentService的单个实例,当它无关时,它就处于休眠状态。

由于服务特定于您自己的应用程序,我可能会避免使用隐式Intent(即指定操作/类别),而是使用明确指定服务类本身的Intent。可以使用startService()或bindService()创建/启动IntentService,或者两者都可以适用,具体取决于您的应用程序的要求。

相关问题