我是android的新手。
我正在开发一个祷告应用程序。功能是用户将设定一个时间,并在特定时间进行整个月的祈祷。
所以我这样做:
for (int counterAlarm = 0; counterAlarm < spanDays; ++counterAlarm) {
alarmPendingIntent = CreatePendingIntent(context,
String.valueOf(100 + counterAlarm));
SetAlarmForDay(context, calendarMorningReminder,
alarmPendingIntent);
calendarMorningReminder.add(Calendar.DAY_OF_MONTH, 1);
sbRequestCodes.append(String.valueOf(100 + counterAlarm));
sbRequestCodes.append(";");
}
上面的for循环添加了所有日期的警报,假设用户在当月的第一天早上6点清理时间,然后注册30个警报。
private static PendingIntent CreatePendingIntent(Context context,
String requestCode) {
Intent intent = new Intent(context, ApplicationBroadcastReceiver.class);
intent.setAction(Constants.INTENT_ACTION_ALARM_RAISED);
return PendingIntent.getBroadcast(context,
Integer.parseInt(requestCode), intent,
PendingIntent.FLAG_UPDATE_CURRENT);
}
@SuppressLint("NewApi")
private static void SetAlarmForDay(Context context, Calendar calendar,
PendingIntent pIntent) {
AlarmManager alarmManager = (AlarmManager) context
.getSystemService(Context.ALARM_SERVICE);
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) {
alarmManager.setExact(AlarmManager.RTC_WAKEUP,
calendar.getTimeInMillis(), pIntent);
} else {
alarmManager.set(AlarmManager.RTC_WAKEUP,
calendar.getTimeInMillis(), pIntent);
}
}
所以我有两个问题:
注册所有30个警报,这种方法在android中已经足够了。或者有更好的方法来解决这个问题?
我们的应用程序是从android gingerbread向后兼容的,所以我们使用setExact()
方法比kitkat和set()
方法更适用于所有其他较低版本。这种方法够神吗?
请帮忙。