0
我想在每天的特定时间(即上午11点)使用AlarmManager
运行服务。但由于某种原因,我的代码无法正常工作。AlarmManager服务调用不起作用
AlarmManager
public class ScheduleHelper {
/**
* @param context
* @param intent
* @param hourOfDay
*/
public static void scheduleDayly(Context context){
Calendar cal = new GregorianCalendar();
cal.set(Calendar.HOUR_OF_DAY, 11);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
Intent intent = new Intent(context, NotificationService.class);
schedule(context, intent, cal, AlarmManager.INTERVAL_DAY, 1337);
}
/**
* @param context
* @param intent
* @param calendar
*/
private static void schedule(Context context, Intent intent,
Calendar calendar, long alarmManagerTimeInterval, int requestCode) {
PendingIntent pendingIntent = PendingIntent.getBroadcast(context,
requestCode, intent, 0);
Toast.makeText(context, "Running in " + (System.currentTimeMillis()-calendar.getTimeInMillis()) + " ms", Toast.LENGTH_LONG).show();
AlarmManager alarmManager = (AlarmManager) context
.getSystemService(Context.ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,
calendar.getTimeInMillis(), alarmManagerTimeInterval,
pendingIntent);
}
}
NotificationService
public class NotificationService extends Service {
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate() {
Log.i("Service", "service created");
super.onCreate();
}
@Override
public void onStart(Intent intent, int startId) {
Log.i("Service", "service started");
//Todo: create notification
super.onStart(intent, startId);
}
@Override
public void onDestroy() {
super.onDestroy();
Log.i("Service", "service destroyed");
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.i("Service", "service start command received");
return Service.START_STICKY;
}
}
根据logcat的服务,从未创建或启动(我也试过,现在同样的结果设置日历5分钟过去)
你可以给我提示我是什么做错了?不幸的是,通过阅读关于同一主题的几个问题并没有帮助解决问题。
您是否在清单中添加了您的服务? – Opiatefuchs
是的,我添加了它。 – Markus