300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > android 闹钟服务 如果闹钟时间已经过去 android可以防止即时触发闹钟服务

android 闹钟服务 如果闹钟时间已经过去 android可以防止即时触发闹钟服务

时间:2021-05-03 19:06:35

相关推荐

android 闹钟服务 如果闹钟时间已经过去 android可以防止即时触发闹钟服务

如果闹钟时间已经过去,android可以防止即时触发闹钟服务

报警pipe理器的参考说

如果所述的触发时间在过去,则会立即触发警报。

我在申请中遇到了这个问题。 这是我的报警pipe理员代码:

Intent myIntent = new Intent(getActivity(), DinnerAlarmReceiver.class); pendingDinnerIntent = PendingIntent.getBroadcast(getActivity(), 0, myIntent, 0); Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.HOUR_OF_DAY, hourOfDay); calendar.set(Calendar.MINUTE, minute); alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingDinnerIntent);

有没有解决这个问题的方法?

– – -编辑 – – –

我已经写了一些代码来估计闹钟的设置时间是否在当前时间之前。 以上是具有相应变化的部分:

Calendar calendar = Calendar.getInstance(); long currentTime = calendar.getTimeInMillis(); calendar.set(Calendar.HOUR_OF_DAY, hourOfDay); calendar.set(Calendar.MINUTE, minute); long setTime = calendar.getTimeInMillis(); Timestamp setTimestamp = new Timestamp(setTime); Timestamp currentTimestamp = new Timestamp(currentTime); if (setTimestamp.after(currentTimestamp)) { alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingDinnerIntent); } else { }

如果setTimestamp在currentTimestamp之前,我应该如何使用alarmManager ?

您不需要创buildTimestamp 。 您可以使用Calendar来做到这一点。

Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.HOUR_OF_DAY, hourOfDay); calendar.set(Calendar.MINUTE, minute); if(calendar.before(Calendar.getInstance())) { calendar.add(Calendar.DATE, 1); } alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingDinnerIntent);

我还会提到,从KitKat开始,如果你的targetSdkVersion是19或者更高,那么AlarmManager#set()方法就不准确了。 如果您希望闹钟在准确时间触发,则需要使用setExact*()方法。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。