Java Android AlarmManager与SQL
我有一个使用SQLite数据库在特定时间从数据库触发警报的项目我在项目中使用android alarm manager,并使用广播接收器在启动时管理警报下面是一个警报代码示例:Java Android AlarmManager与SQL,java,android,Java,Android,我有一个使用SQLite数据库在特定时间从数据库触发警报的项目我在项目中使用android alarm manager,并使用广播接收器在启动时管理警报下面是一个警报代码示例: alarmIntent = PendingIntent.getBroadcast(context, ALARM_ID, intent, PendingIntent.FLAG_CANCEL_CURRENT); if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LO
alarmIntent = PendingIntent.getBroadcast(context, ALARM_ID, intent,
PendingIntent.FLAG_CANCEL_CURRENT);
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP_MR1) {
//lollipop_mr1 is 22, this is only 23 and above
// alarmMgr.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, then.getMillis()-G.AzanDelayTime, alarmIntent);
alarmMgr.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, then.getMillis(), alarmIntent);
} else if (Build.VERSION.SDK_INT > Build.VERSION_CODES.JELLY_BEAN_MR2) {
//JB_MR2 is 18, this is only 19 and above.
//alarmMgr.setExact(AlarmManager.RTC_WAKEUP, then.getMillis()-G.AzanDelayTime, alarmIntent);
alarmMgr.setExact(AlarmManager.RTC_WAKEUP, then.getMillis(), alarmIntent);
}
else if (Build.VERSION.SDK_INT >= 21) {
alarmMgr.setAlarmClock(new AlarmManager.AlarmClockInfo(then.getMillis(), alarmIntent), alarmIntent);
Toast.makeText(G.context,"This is sdk>21",Toast.LENGTH_LONG).show();
}
else {
//available since api1
//alarmMgr.set(AlarmManager.RTC_WAKEUP, then.getMillis()-G.AzanDelayTime, alarmIntent);
alarmMgr.set(AlarmManager.RTC_WAKEUP, then.getMillis(), alarmIntent);
但我想在每个设备上的准确时间触发警报,在某些情况下,警报在15分钟或更短的时间内发出。解决此问题的最佳方法是什么?您可以使用:
或
您可以使用:
或
使用AlarmManagerCompat而不是AlarmManager有什么好处?该类处理您在代码@SeyedMassoudMotallebiOK中编写的所有if/else分支,听起来不错,但在精确计时方面我的请求是在每个设备上的精确时间发出警报使用AlarmManagerCompat而不是AlarmManager有什么好处?该类处理您在代码@seyedMassoudMotaleBiok中编写的所有if/else分支,听起来不错,但我的要求是,每个设备上的闹钟都是在准确的时间发出的。。
AlarmManagerCompat.setExactAndAllowWhileIdle(...)
AlarmManagerCompat.setAlarmClock(...)