如何查看我的服务是否已启动

5

在我的代码中,我会根据条件来启动我的服务,如下所示:

Intent intent = new Intent(context, MyService.class);
context.startService(intent);

请问我是否可以查找之前是否已经启动了相同的服务,以便不会重复启动服务?

谢谢。

2个回答

8

如果一个服务已经在运行,则不会启动两次该服务,实际上,即使您多次调用startService(),您只需要一个stopService()来停止它。

请参见此处此处


当服务首次创建时,系统会调用onCreate()方法来执行一次性的设置程序(在调用onStartCommand()或onBind()之前)。如果服务已经在运行,则不会调用此方法。因此,这意味着我们可以在布尔逻辑中进行操作,以了解服务是否已启动。 - sssvrock

5

请看以下内容:

private boolean isMyServiceRunning() {
ActivityManager manager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
    if ("com.example.MyService".equals(service.service.getClassName())) {
        return true;
    }
}
return false;}

@bigstones: 我不知道怎么做,但我有一个服务,它可以随意创建多少次(可能是因为我在其中创建了各种可运行的对象)。


当我使用上述代码时,它只显示所有系统服务,而不是我创建的服务。 - user1810931

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接