Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android AlarmManager与SQL_Java_Android - Fatal编程技术网

Java Android AlarmManager与SQL

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

我有一个使用SQLite数据库在特定时间从数据库触发警报的项目我在项目中使用android alarm manager,并使用广播接收器在启动时管理警报下面是一个警报代码示例:

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(...)