启动Android服务已经运行?

GVi*_*i82 37 service android android-intent

当然这是一个微不足道的问题.如果我Service使用以下代码启动a会发生什么:

 startService(new Intent(this,myService.class));
Run Code Online (Sandbox Code Playgroud)

然后我不小心回想起上面的代码,而它还在Service运行?

我担心第二次调用startservice可以创建一个新的Service,以便同时执行两个不同的进程.

Com*_*are 67

我担心第二次调用startservice可以创建一个新服务,以便同时执行两个不同的进程.

不,有多种情况:

  • 不,它不会创建新服务.如果该服务已在运行,则将onStartCommand()再次调用该服务以传递新服务Intent,但不会创建第二个副本.

  • 不,它不会"同时执行两个不同的进程",因为默认情况下,服务在与应用程序其余部分相同的进程中运行.

  • @AnkitGarg:`onStartCommand()`在调用`startService()`时立即调用(相对).在`IntentService`中,它将命令弹出到工作队列,由后台线程和`onHandleIntent()`处理.在正常情况下,该队列为空,因为该服务刚刚启动.并且,在正常情况下,`onHandleIntent()`在发送新命令之前完成,因此服务关闭.在您的情况下,您正在处理第一个命令时发送第二个命令,因此第二个命令将排队并在第一个命令完成后立即处理. (4认同)