Я пытаюсь получить Службы, работающие в Android. Мое приложение может запустить мою службу сейчас, но когда служба работает в фоновом режиме, и я запускаю свою (основную) активность, служба перезапустится (вызовы будут вызываться команды и onStartCommand()
). В моей MainActivity я проверяю, если служба уже запущена с помощью следующего кода:Перезапуск службы при стартовой деятельности
if (isServiceRunning()){
System.out.println("De serice is running");
}
else{
System.out.println("De service is niet running");
startService(new Intent(this, YourService.class));
}
...
private boolean isServiceRunning() {
ActivityManager manager = (ActivityManager)getSystemService(ACTIVITY_SERVICE);
for (ActivityManager.RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
Log.d("services", service.service.getClassName());
if ("com.vandervoorden.mijncijfers.YourService".equals(service.service.getClassName())) {
return true;
}
}
return false;
}
Когда моя служба работает «De serice работает» показан на моей консоли.
Почему onCreate()
и onStartCommand()
вызываются, когда я не перезапускал сервис самостоятельно? Как я могу убедиться, что служба не запускается дважды, когда она уже запущена?
EDIT 1 2013-10-07 8:54 вечера:
Мой класс обслуживания:
public class YourService extends Service
{
Alarm alarm = new Alarm();
public void onCreate()
{
super.onCreate();
System.out.println("service: onCreate");
}
public int onStartCommand(Intent intent, int flags, int startId) {
//alarm.SetAlarm(this);
System.out.println("service: onStartCommand");
return START_STICKY;
}
@Override
public IBinder onBind(Intent intent)
{
return null;
}
}