我有一个启动计时器的Android服务:
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
timer.scheduleAtFixedRate(new VeryImportantTask(), 0, RATE);
return START_STICKY;
}
我知道服务是单身,但每次调用onStartCommand
时都会调用startService()
方法吗?如果是这样,我应该控制我的计时器刚刚第一次启动,不应该吗?我正在考虑服务中的静态布尔标志。还有更好的方法吗?
答案 0 :(得分:3)
在您的情况下,即 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 ,并且在START_STICKY
重新启动的情况下每次为 。