安卓重复服务

3

我想知道当使用相同的类时,是否可以创建两次(或多次)服务(myService.class)。比如第一次是在Application中进行初始化(这意味着它在后台运行),而其他情况可能发生在广播接收器中。

 startService(new Intent(this, myService.class));

或者如果服务当前正在运行,则其他服务未初始化..?
2个回答

4
如在这里所讨论的那样,Service有一个单一实例。官方文档已经说明了每次调用startService都会对应地调用该服务实例的onStartCommand方法。但不会创建新的实例。

如果我说错了请纠正我 - 如果它在不同的上下文中,那么就有可能,但是如果我使用相同的上下文(例如getApplicationContext()),那么只会创建一个实例,对吗? - user_s
不好意思,据我所知这是每个应用程序的设置,也就是每个软件包。 - Ofek Ron

0
我找到了一个简单的解决方案。
每当调用startService()时,onCreate()onStartCommand()也会被调用。但变量仍然是相同的,并且不会再次初始化。
因此,为了解决这个问题,创建一个私有字段,如下所示:
private var isRunning = false

或者:

private boolean isRunning = false;

然后,在onCreate()中:

    if (!isRunning) {
        Log.i("ServiceStarter", "On start called")
        isRunning = true
        // do your work here
    }

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