0

我有一个我知道已经在运行的服务,我的活动如何在不重新启动服务的情况下与它通信。

详细地说,我有一个启动服务的小部件,单击时加载一个活动,在这种情况下,服务应该仍在运行。

我该如何做一些事情:

  • 有条件地检查服务是否存在
  • 访问服务中的方法

基本上,我不想做的主要事情是startService(new Intent(...))在我的活动中运行。我不想onStart在我的服务中再次运行。

理想情况下,我可以在我的服务类中添加一些方法,然后在我的活动中调用这些方法,就像我会调用项目中的任何其他公共方法一样。

我想在我的服务中启动一些新线程,如果不需要,我不想创建第二个服务类。

感谢您的洞察力

4

1 回答 1

2

上的文档startService()可能会有所帮助:

请求启动给定的应用程序服务。Intent 可以包含要启动的特定服务实现的完整类名,也可以包含要启动的服务种类的操作和其他字段的抽象定义。如果此服务尚未运行,它将被实例化并启动(如果需要,为它创建一个进程);如果它正在运行,那么它会继续运行。

...

退货

如果服务正在启动或已经在运行,则返回实际启动的服务的 ComponentName;否则,如果服务不存在,则返回 null。

因此,如果您的服务已经在运行,startService()则不会启动新版本。

于 2012-12-23T22:32:49.483 回答