Android 服务内的计时器

Timer inside Android service

我有一个 Android 服务可以启动一个定时器来做一些事情:

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    timer.scheduleAtFixedRate(new VeryImportantTask(), 0, RATE);
    return START_STICKY;
}

我知道服务是单例的,但是每次我调用 startService() 时是否调用 onStartCommand 方法?如果是这样,我应该控制我的计时器是第一次启动,不是吗?我在考虑服务中的静态布尔标志。有没有更好的方法?

在你的情况下,即 START_STICKY 你可以简单地检查意图值 nullity 像这样

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
      if(null==intent){
              // service restarted do what you want
        }
    return START_STICKY;
}

因为第一次意图不会 null 并且每次null 以防重新启动 [=12] =].