警报管理器在Android中不工作
我需要每隔一段时间设置一个闹钟。为了实现这一目标,我写道: 测试片段类 报警接收器类 } 我将调试点放在警报管理器在Android中不工作,android,android-layout,broadcastreceiver,alarmmanager,Android,Android Layout,Broadcastreceiver,Alarmmanager,我需要每隔一段时间设置一个闹钟。为了实现这一目标,我写道: 测试片段类 报警接收器类 } 我将调试点放在Toast.makeText(上下文,“我正在运行”,Toast.LENGTH\u SHORT.show()
Toast.makeText(上下文,“我正在运行”,Toast.LENGTH\u SHORT.show()但是什么也没发生
下午4点=1499510100000L
下午4:03=149951020000升
我做错了什么?此外,我想在onReceive
方法中添加一个本地通知。您应该使用日历
对象来设置报警时间
对于下午4点的闹钟,您可以执行以下操作:
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 16);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND,0);
然后设置AlarmManager
,如前所述,但最后一行使用:
alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
也许您想使用重复报警,甚至是处理程序
如果是这样,您应该访问:4PM=14995101000l 4:03PM=14995102000l
错误。这些值是自运行报警管理器以来,它应该等待的毫秒数。这不是时间价值。顺便说一下,1499510100000相当于大约47年半。你可能不想等这么长时间,看看你的闹钟是否响了……;)1499510100000L来自哪里?改用日历。@Rotwang@Mehran此值可能错误。我将检查它,但这些值来自数据库,该数据库使用Java.Util
time library以毫秒为单位存储时间。我不能在这里使用new Date().getTime()
而不是Calendar
吗?这些值来自数据库,它使用Java.Util
时间库以毫秒为单位存储时间。我不能在这里使用newdate().getTime()
而不是Calendar
?让我们以毫秒为单位计算两次(可能更多),因为我已经有了以毫秒为单位的日期,日历也会做同样的事情
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 16);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND,0);
alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);