2016-07-08 4 views
2

У меня есть Android сервис, который запускает таймер, который делает материал:Таймера внутри службы Android

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

Я знаю, что услуги являются синглтоном, но делает onStartCommand метод вызывается каждый раз, когда я называю startService()? Если это так, я должен контролировать, что мой таймер только начинается в первый раз, не так ли? Я думаю о статическом булевом флаге в сервисе. Есть ли способ лучше?

+0

Я думаю, что если вы выполняете некоторую задачу с повторным интервалом, вы можете использовать AlarmManager –

ответ

2

В вашем случае есть 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; 
} 

, потому что первый раз цель не будет нулевой и это будет нулем каждый раз, когда в случае перезапуска с START_STICKY.

Смежные вопросы