我想实现这一点:日常通知,在一定的时间
应用第一个转折点后,用户会收到通知,每天下午2点,如果某些条件为真。如果条件不成立,我们今天不会显示通知。条件在下午2点检查,它从互联网下载一些数据。
到目前为止,我用AlarmManager及其方法setRepeating()与24小时的时间间隔。 AlarmManager启动了一个Service。在此服务中,我正在下载数据,检查条件,如果它是真的 - 显示Notification。由于下载可以持续5秒以上,因此我已为此服务声明android:process=":background"
,以便在单独的过程中运行它,并且不会阻止我的UI。
这种方法有两个缺点:
1:如果用户打开应用程序,让我们下午4时说(和条件为真),他将收到通知立即。从setRepeating()文档:
如果发生在过去的时候,报警器会立即取决于 触发时间有多远的过去相对于重复间隔触发 ,与报警计数。
我想那个用户不会收到通知这一天,只有第二天等等。
2:我担心用户关闭手机后我的通知不会显示。从AlarmManager文档:当设备处于睡眠状态(并且可以选择唤醒设备,如果他们在这段时间内熄灭),但如果它被关闭并重新启动后会被清除
已注册的警报都将保留。
我不知道是否有可能让它一直工作。
如果您有任何想法如何使它更好,欢迎您。
这是一个很好的建议,我也用这个 – slinden77
非常感谢!我有一个问题,你确定:twopm.set(GregorianCalendar.HOUR,2)是设置小时PM,而不是AM?也许我应该使用twoPm.set(GregorianCalendar.HOUR_OF_DAY,14)? –
是的,你是对的 – AntonS