Я использую Android AlarmManger, чтобы запланировать запуск IntentService через небольшие промежутки времени.Android IntentService выполняется только один раз
Вот мой AlarmManger:
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 секунд он укажет, что служба запускается в логарифме, но код не будет выполняться.
Как получить услугу intenet выполнить код внутри onHandleIntent
каждый раз, когда он запускается?
Благодаря
«но код не будет исполнен» - что такое «код»? Как вы определили, что он «не выполнит»? Почему вы используете 'getActivity()' 'PendingIntent' для' Intent' для класса с именем 'DService'? – CommonsWare
@CommonsWare - Вы правы, изменились на 'getService()', и теперь все работает отлично. Добавить как ответ, я соглашусь. спасибо – Wahtever