Я использую Android AlarmManger, чтобы запланировать запуск IntentService через небольшие промежутки времени.
Вот мой будильник:
static void setNextSchedule(Context ctx, long interval){
AlarmManager manager = (AlarmManager) ctx.getSystemService(Context.ALARM_SERVICE);
Intent nIntent = new Intent(ctx, DService.class);
PendingIntent pIntent = PendingIntent.getActivity(ctx, 1, nIntent, PendingIntent.FLAG_UPDATE_CURRENT);
manager.setRepeating(AlarmManager.ELAPSED_REALTIME,
SystemClock.elapsedRealtime() + interval, interval, pIntent);
Log.i(ScheduleAlarm.class.getSimpleName(), "Next alarm set");
}
И мой IntentService:
@Override
protected void onHandleIntent(Intent intent) {
Log.i(DService.class.getSimpleName(), "Service starting");
ScheduleAlarm.setNextSchedule(getApplicationContext(), 15000);
}
В настоящее время он просто содержит код для тестирования. Теперь этот код будет успешно работать без проблем после запуска приложения, но через 15 секунд в лог-каталоге будет указано, что служба запускается, но код не будет выполняться.
Как заставить службу Интернета выполнять код внутри onHandleIntent
при каждом запуске?
Спасибо
getActivity()
PendingIntent
вместоIntent
для класса с именемDService
? - person CommonsWare   schedule 08.02.2014getService()
, и теперь все работает нормально. Добавить как ответ, я приму. Спасибо - person Wahtever   schedule 08.02.2014