我正在使用Android AlarmManger安排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秒后它将表明该服务正在logcat中启动,但代码不会执行。
如何让intenet服务在每次运行时执行onHandleIntent
内的代码?
由于
答案 0 :(得分:1)
使用PendingIntent
时,工厂方法需要与Intent
所用的组件类型相匹配:
如果您的Intent
指向某项活动,请使用getActivity()
如果您的Intent
指向某项服务,请使用getService()
如果您的Intent
指向BroadcastReceiver
,请使用getBroadcast()
如果您的Intent
指向上述任何一项,请直接进入监狱,不要通过Go!,不要收取200美元: - )