【发布时间】:2015-08-08 17:35:10
【问题描述】:
我的闹钟启动通知服务。 A 希望我的闹钟在每个月的第 7 天 14:00 触发
我的接收者:
public class AlarmReceiver extends BroadcastReceiver {
private AlarmManager alarmMgr;
private PendingIntent alarmIntent;
@Override
public void onReceive(Context context, Intent intent) {
System.out.println("RECEIVER STARTED");
if (checkForDay()) {
alarmMgr = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent intent1 = new Intent(context, AlarmService.class);
alarmIntent = PendingIntent.getService(context, 0, intent1, 0);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, 14);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
alarmMgr.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), alarmIntent);
System.out.println("ALARM SET");
} else
System.out.println("ALARM NOT SET");
}
private boolean checkForDay() {
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
return calendar.get(Calendar.DATE) == 7;
}
我的接收器从 BOOT_COMPLETE 开始,并从 MainActivity onCreate() 中的广播开始; 但也有问题。
- 如果用户保持手机 24/7 开机会怎样
- 用户可以在 14:00 之后启动我的应用程序并立即触发警报 - 不想要它。仅限 14:00
- Uset 可能会忘记启动我的应用程序,并且根本不会触发警报
如果 setInexactRepeating() 不好,由于间隔,如何实现正确的每月重复警报。每个月都不一样?
【问题讨论】:
标签: android broadcastreceiver alarmmanager