Если задача выполняется, скажем, каждые X минут или более, использование обработчика - это нормально.Если задержка между выполнением задачи больше (часы или около того), я рекомендую использовать AlarmManager
:
long now = System.currentTimeMillis();
long interval = XXX;// time in milisecs for the next execution
Intent i = new Intent();
i.setClass(this, YourService.class);
i.setAction("some_action_to_indicate_the_task");
PendingIntent pi = PendingIntent.getService(this, 0, i, 0);
AlarmManager alarmMgr = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmMgr.set(AlarmManager.RTC_WAKEUP, now + interval, pi);