我正在开发一个应用程序,您可以安排时间,它会像谷歌日历一样及时提醒您。我使用AlarmManager
类并设置重复任务,每隔一分钟检查数据库,看看是否有任何警报。
@Override
public void onReceive(Context context, Intent intent) {
Calendar now = Calendar.getInstance();
doRepeatingWorks(now.getTimeInMillis()); // Like Checking if one day passed to do some tasks
checkDbIfThereIsSomeSchedule(now);
}
我称之为启动闹钟管理器:
public void setAlarm(Context context) {
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(context, AlarmReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), G.ALARM_CHECK_INTERVAL_MILIS, pendingIntent);
}
但这是不准确的,有时我发现任务杀手应用程序会扼杀我的警报并使其完全没用。
虽然使用foregroundService
会耗费电量,并且会通知用户。
这个问题是否有任何解决方案或替代方案?
答案 0 :(得分:3)
我使用AlarmManager类并设置重复任务,每隔一分钟检查一次数据库,看看当时是否有任何警报
这是一个非常糟糕的方法。这种行为正是Android 6.0中添加了Doze模式和app待机的原因。
这个问题是否有任何解决方案或替代方案?"
为第一个事件安排警报事件。获得控制权后,通知用户该事件,然后按顺序为下一个事件安排警报事件。如果用户添加的事件比第一个事件更早,请取消上一个警报并为新的第一个事件安排一个。
答案 1 :(得分:0)
您不需要每1分钟检查一次警报。我希望这篇文章可以帮助你 - Scheduled Alarm Manager not working Android