我可以在Service.onStartCommand中调用stopSelf()吗?

72

有一些情况下,可能会尝试启动我的服务,而此时不应该这样做。在这种情况下,在onStartCommand()方法中调用stopSelf()是否是不好的形式?如果是这样的话,最好的处理方式是什么?非常感谢任何资源。

1个回答

91
在onStartCommand()方法中调用stopSelf()是否不好的形式?
我一时想不出为什么这样做会有问题。
像Android中的许多其他功能一样,stopSelf()没有即时效果。它会将消息放在主应用程序线程处理的消息队列中。停止服务的实际工作甚至要在onStartCommand()方法返回后的某个时间才会开始。

3
我认为这不是问题,但我并不完全确定Service类的内部机制,调用一个会在某些启动相关事件完成之前停止其启动的函数可能会导致一些不必要的行为,具体取决于它的设计方式。请注意,这里的“它”指的是该函数。 - Spencer Ruport
9
“stopSelf()”在安卓中像很多其他东西一样,没有立即的效果。它会将一条消息放入主应用程序线程处理的消息队列中。停止服务的实际工作甚至要等到“onStartCommand()”返回后的某个时间才会开始。 - CommonsWare
5
作为后续问题,刚刚调用 stopSelf() 后应返回什么适当的值? - Mark
17
可能是指START_NOT_STICKY - CommonsWare

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