在onStartCommand中为服务返回什么

时间:2014-02-21 17:50:12

标签: java android

我一直在查看文档,有时onStartCommand()会返回START_NOT_STICKY,有时会返回以下内容:

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    // TODO Auto-generated method stub
    return super.onStartCommand(intent, flags, startId);
}

我现在很困惑为什么有些服务返回super.onStartCommand(intent, flags, startId);

3 个答案:

答案 0 :(得分:10)

这完全取决于你想要什么。 documentation说:

  

为了向后兼容,默认实现调用onStart(Intent,int)并返回START_STICKY或   START_STICKY_COMPATIBILITY。

因此,返回super.onStartCommand()相当于返回START_STICKY。如果您不想要默认行为,则可以返回另一个常量。

答案 1 :(得分:1)

最常用的是

  • 服务。START_STICKY
  • 服务。START_NOT_STICKY和
  • 服务。START_REDELIVER_INTENT

Service.START_STICKY将在Android系统由于任何原因终止时重新启动。 服务。START_NOT_STICKY将一直运行,直到有待处理的作品为止。 服务。START_REDELIVER_INTENT与服务类似。START_STICKY,但原始Intent重新传递到onStartCommand方法。

答案 2 :(得分:0)

 Service.START_STICKY
>> the system restarts the service with everything refresh not using the previous intent. 
Service.START_NOT_STICKY 
>> the system does not restarts the service.
Service.START_REDELIVER_INTENT
>>the system restarts the service with using the previous intent.`enter code here