我想实现这一点:
在应用程序第一次打开后,用户会收到通知,每天下午2点,如果某些条件为真。 如果条件是假的,我们没有显示这一天的通知。 条件是在下午检查,它从互联网下载一些数据。
到目前为止我用AlarmManager及其方法setRepeating()用24小时的时间间隔。 AlarmManager触发了服务 。 在这种服务,我下载数据,检查条件,如果这是真的-显示通知 。 由于下载可以持续超过5秒钟,我已经声明android:process=":background"
这个服务,在单独的进程中运行,并没有挡住我的UI。
这种方法有两个缺点:
1:如果用户打开应用程序,让我们说,下午4时(和条件为真),他会立即收到通知。 从setRepeating ()文档:
如果在过去发生的时间,报警器会立即根据触发时间是如何在过去远是相对于重复间隔触发,与报警计数。
我想该用户将不会收到通知这一天,只有第二天等等。
2:我很担心,我会通知用户不能展后关闭手机。 从AlarmManager文档:
当设备处于睡眠状态(并且可以选择唤醒设备,如果他们在这段时间内熄灭),但如果它被关闭并重新启动后会被清除已注册的警报都将保留。
我不知道是否有可能使它工作的所有时间。
如果你有任何想法如何使它更好,欢迎您。