android access运行的服务没有startService

android access运行的服务没有startService,android,service,android-activity,Android,Service,Android Activity,我知道有一个服务正在运行,我的活动如何在不重新启动服务的情况下与其通信 更详细地说,我有一个小部件,它启动一个服务,当单击某个活动时,它就会被加载,在这种情况下,服务应该仍然在运行 我如何按照以下思路做一些事情: 有条件地检查服务是否处于活动状态 访问服务中的方法 基本上,我不想做的主要事情是在我的活动中运行startService(newintent(…)。我不想在我的服务中再次运行onStart 理想情况下,我可以在服务类中添加一些方法,并在活动中调用这些方法,就像调用项目中的任何其他公

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

更详细地说,我有一个小部件,它启动一个服务,当单击某个活动时,它就会被加载,在这种情况下,服务应该仍然在运行

我如何按照以下思路做一些事情:

  • 有条件地检查服务是否处于活动状态
  • 访问服务中的方法
基本上,我不想做的主要事情是在我的活动中运行
startService(newintent(…)
。我不想在我的服务中再次运行
onStart

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

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

感谢您的深入了解

有关的文档可能会有所帮助:

请求启动给定的应用程序服务。意图可以包含要启动的特定服务实现的完整类名,也可以通过要启动的服务类型的操作和其他字段包含抽象定义。如果这个服务还没有运行,它将被实例化并启动(如果需要,为它创建一个进程);如果它正在运行,则它将保持运行状态

返回

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


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

太好了!我当然会测试以确保不再调用
onStart()
,但如果是,我可以传递一些意图标志,有条件地遍历我的其他代码。我相信
onStartCommand()
将再次被调用。“我不想在我的服务中再次运行onStart。”您可以使用简单的布尔值来跟踪服务是否已在运行。(例如,使用一个字段变量
boolean isRunning=false;
并在
onStartCommand()
change
isRunning=true
。如果再次调用
onStartCommand()
,只需检查
If(isRunning)
)谢谢,我已经开始实施更改,我可以选择在intent extras中传递布尔值并检查包。另外,onstartcommand调用onstart btwGlad I可能会有所帮助,但不推荐使用它,否则后果自负。干杯