在Android应用开发中,实现在某个时间处理特定事件的实现方法有多种。本文从AlarmManager的角度做简要说明,先看处理的核心代码:
// AutoAlarmReceiver是一个BroadcastReceiver,用来接收系统的通知和启动相应的服务来完成一定的操作
Intent intent = new Intent(this, AutoAlarmReceiver.class);
PendingIntent sender = PendingIntent.getBroadcast(this, 0, intent, 0);
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(timeInMillis);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), IParameter.AUTO_ALARM_INTERVAL_7_DAYS, sender);
具体方法就不说明含义了,详见开发者文档。当然也可以设置成单次警报,只要调用AlarmManager的set方法即可。
如果需要停止某个循环警报的方法如下:
Intent intent = new Intent(this, AutoAlarmReceiver.class);
PendingIntent sender = PendingIntent.getBroadcast(this, 0, intent, 0);
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
alarmManager.cancel(sender);
注意:
PendingIntent sender = PendingIntent.getBroadcast(this, 0, intent, 0);
·此处的第二个参数要和设置循环警报时的参数要一致。
关于AutoAlarmReceiver的定义就比较简单,如下:
public class AutoAlarmReceiver extends BroadcastReceiver {
public static boolean isRepeat;
@Override
public void onReceive(Context context, Intent intent) {
// 某些操作
}
}
不要忘记在Manifest文件中声明Receiver哦,如下:
<receiver android:name=".your-path.AutoAlarmReceiver" />