我如何设置一个警报管理器来启动每个特定的星期几和安卓时间?

waa*_*990 8 java android alarmmanager

例如,我希望有一个警报,将在中午每个星期天开火....我该怎么做?

Ale*_*dam 14

使用AlarmManager类:

http://developer.android.com/reference/android/app/AlarmManager.html

课程概述

此类提供对系统警报服务的访问.这些允许您安排应用程序在将来的某个时间运行.当警报响起时,系统会广播已为其注册的Intent,如果目标应用程序尚未运行,则会自动启动它.设备处于休眠状态时会保留已注册的警报(如果设备在此期间关闭,则可以选择将设备唤醒),但如果设备关闭并重新启动,则会清除设备.

使用public void set (int type, long triggerAtTime, PendingIntent operation)设定的触发它的时间.

使用void setRepeating(int type, long triggerAtTime, long interval, PendingIntent operation)调度重复报警.

这是一个完整的例子.我真的不记得所有的Calendar方法,所以我确信这部分内容可以简化,但这是一个开始,你可以在以后优化它:

AlarmManager alarm = (AlarmMAnager) Context.getSystemService(Context.ALARM_SERVICE);
Calendar timeOff = Calendar.getInstance();
int days = Calendar.SUNDAY + (7 - timeOff.get(Calendar.DAY_OF_WEEK)); // how many days until Sunday
timeOff.add(Calendar.DATE, days);
timeOff.set(Calendar.HOUR, 12);
timeOff.set(Calendar.MINUTE, 0);
timeOff.set(Calendar.SECOND, 0);

alarm.set(AlarmManager.RTC_WAKEUP, timeOff.getTimeInMillis(), yourOperation);
Run Code Online (Sandbox Code Playgroud)

  • @will我会更新答案.它是同一个AlarmManager api的一部分.基本上,你使用一周604,800,000毫的间隔) (5认同)