最近离开了上家来到了新公司,适应了一段时间,然后写了一部分有关闹钟的代码,这里做个小小的总结。
Android的闹钟有个系统的服务类——AlarmManager,这个类的使用还是很容易懂的,我在这里先列一下至少需要知道的知识点:
1.AlarmManager:set(int type, long triggerAtMillis, PendingIntent operation)
2.AlarmManager:setRepeating(int type, long triggerAtMillis, long intervalMillis, PendingIntent operation)
3.PendingIntent:getBroadcast(Context context, int requestCode, Intent intent, int flags)
网上有很多的讲解,但是很多都是旧版本(API < 19)的介绍,所以我在这里特别说明一下,API 19 之后,setRepeating()方法不准或只执行一次,这样设置重复闹钟就会很坑,这里讲一下另外一种做法:也就是调用set()方法,然后在第一个闹钟接收到后设置下一个闹钟。
废话不多说,直接撸代码,我尽量把注释写的简介明了。
1.先来一个AlarmBean:
public class AlarmBean {
private String content;//闹钟内容
private Date cur_time;//设置闹钟的时间
private String repeat;//是否重复
private Date time;//闹钟提醒时间
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public Date getCur_time() {
return cur_time;
}
public void setCur_time(Date cur_time) {
this.cur_time = cur_time;
}
public String getRepeat() {
return repeat;
}
public void setRepeat(String repeat) {
this.repeat = repeat;
}
public Date getTime() {
return time;
}
public void setTime(Date time) {
this.time = time;
}
@Override
public String toString() {
StringBuilder temp = new StringBuilder();
if (repeat.equals("0000000")) temp = temp.append("不重复");
else {
char[] array = repeat.toCharArray();
if (array[0] == '1') {
temp = temp.append("每周一 ");
}
if (array[1] == '1') {
temp = temp.append("每周二 ");
}
if (array[2] == '1') {
temp = temp.append("每周三 ");
}
if (array[3] == '1') {
temp = temp.append("每周四 ");
}
if (array[4] == '1') {
temp = temp.append("每周五 ");
}
if (array[5] == '1') {
temp = temp.append("每周六 ");
}
if (array[6] == '1') {
temp = temp.append("每周日 ");
}
}
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String tar = simpleDateFormat.format(time);
if (cur_time == null)
return "闹钟提醒时间:" + tar + ";闹钟提醒内容:" + content + ";闹钟重复次数:" + temp.toString();
else {
String cur = simpleDateFormat.format(cur_time);
return "闹钟设置时间:" + cur + ";闹钟提醒时间:" +
tar + ";闹钟提醒内容:" + content + ";闹钟重复次数:" + temp.toString();
}
}
}
2.再来一个设置闹钟的地方,我是把闹钟设置放在了Application中:
public class MyApplication extends Application {
private stati