首页 > 解决方案 > 编写后台服务以在特定时间调用

问题描述

我编写了一项服务,以 2 小时的间隔运行。但我希望他们被称为(上午 8 点、上午 10 点、下午 12 点等)。不只是从开始的时间开始每 2 小时一次。如何实现呢?

标签: androidservice

解决方案


你应该写这样的东西:

private AlarmManager alarmMgr;
private PendingIntent alarmIntent;
...
alarmMgr = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(context, YourService.class);
alarmIntent = PendingIntent.getService(context, 0, intent, 0); 

Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, 8);
calendar.set(Calendar.HOUR_OF_DAY, 10);
calendar.set(Calendar.HOUR_OF_DAY, 12);

alarmMgr.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
        AlarmManager.INTERVAL_DAY, alarmIntent);

推荐阅读