2011-05-05 37 views
1

我们有两个应用程序都具有相同的服务来从Web服务中提取消息。为了节省电池电量,我们只需要1个服务就可以为两个应用程序提供服务,但是在卸载application1的情况下,我们需要application2的服务来接管这个服务。如何停止多个服务采取一个意图指示?

我们正在通过发送隐式意图来查看我们的其他应用程序是否可以启动并接管。

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

**根据要求编辑,因为问题很模糊,下面的一些答案/评论将针对上一个问题,对于大惊小怪的对不起!

+0

您确定您的服务定义?它绝对听起来像一个选择器。 – JoxTraex 2011-05-05 17:50:25

+0

作为次要评论,请阅读android开发者网站,查找Chooser/Service/Activity来理解它们的含义。他们都是在他们的应用程序的具体情况,帮助我们帮助你。 – JoxTraex 2011-05-05 17:57:05

+0

好吧,我很确定我对此有所了解,但是...我们有一个应用程序,它具有底层服务,它会检查我们的其他应用程序是否需要服务来继续运行 - 如果切换到app2或3并运行他们的服务......但我会花一分钟阅读并回馈给你!感谢你目前的帮助! -Bobby – BobbyTee 2011-05-05 18:02:14

回答

0

有些方法可以检查是否安装了某些应用程序,并且(我相信)可以找出正在运行的东西。然而,我不知道在Intent中提供条件信息来说诸如'使用这个服务实例如果可用'之类的东西(例如)。

我的方法是创建第三个应用程序,它除了包含一个IntentService(即没有任何活动,因此没有UI)外什么也不做。然后,我会从其他两个应用程序中删除服务代码,并让他们使用IntentService的单个实例,该实例在没有任何事情时处于休眠状态。由于该服务特定于您自己的应用程序,因此我可能会避免使用隐式Intent(即指定操作/类别),而是使用明确指定服务类本身的Intent。 IntentService可以使用startService()或bindService()创建/启动,或者两者都适用,具体取决于您的应用程序的要求。

+0

干杯再次列出它作为答案,所以它“解决”!我欠你MisterSquonk! – BobbyTee 2011-05-05 19:30:03

+0

@BobbyTee:谢谢你接受它。我希望它适合你。 – Squonk 2011-05-05 19:33:19

0

通常有一个弹出窗口询问哪个应用程序应该使用这个意图。然后意图被发送到该应用程序。您也可以将一个应用标记为默认应用。

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

+0

我想我没有解释整个问题,这就是这个; 服务被销毁后,onDestroy,我们问一个单一的意图:“是否有任何其他服务需要运行?”那么我们想要的就是可以为我们需要的应用程序进行统治和运行的服务之一。 尽管所有的服务都开始了,尽管它们都做了完全相同的事情,所以我的问题是我们可以限制对意图的服务响应量吗? – BobbyTee 2011-05-05 17:37:46

+0

请编辑您的问题以更好地指定问题。 – 2011-05-05 17:39:23

+0

哦,既然这些是服务,而不是活动,就不会有弹出窗口。他们只是彼此开始...... O_o 请指出您是否需要更多信息,或者如果我应该更好地说出我的问题,我对此很新! – BobbyTee 2011-05-05 17:41:01