我用AlaramManager
实现了background service
,在Oreo以下的设备上运行良好。但是不适用于android Oreo
及以上版本,因为Google停止了background services
从事Oreo及以上版本的工作。
是否有任何源代码或任何种类的资源可以帮助我在alarms
或更高版本的设备上设置android Oreo
?
搜索了一段时间后,我发现了有关JobsIntentService
的信息,但是找不到足够的信息。而且我不知道这是不是要走的路。基本上,我想显示特定日期和时间的notifications
。
谢谢。
答案 0 :(得分:2)
请尝试以下方法,该方法将为您服务。
/**
* Method for start Alarm on defined minute
* @param minutes Minute when you want to start after current time
* @param context
*/
public static void startAlarm(Context context, int minutes) {
Logger.print("AlarmReceiver startAlarm called");
Intent alarmIntent = new Intent(context, WakefulBroadcastReceiverService.class);
alarmIntent.setAction("testAPP");
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 123451, alarmIntent, PendingIntent.FLAG_CANCEL_CURRENT);
AlarmManager manager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
manager.cancel(pendingIntent);
long alarmPeriodicTime = System.currentTimeMillis() + Utils.getTimeInMilliSec(Constant.TimeType.MINUTE, minutes);
if (Build.VERSION.SDK_INT >= 23) {
manager.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, alarmPeriodicTime, pendingIntent);
} else if (Build.VERSION.SDK_INT >= 19) {
manager.setExact(AlarmManager.RTC_WAKEUP, alarmPeriodicTime, pendingIntent);
} else {
manager.set(AlarmManager.RTC_WAKEUP, alarmPeriodicTime, pendingIntent);
}
}