我想实现这一点:
首次打开应用程序后,如果某些条件为真,用户会在每天下午 2 点收到通知。如果条件为假,我们今天不会显示通知。下午 2 点检查条件,它从 Internet 下载一些数据。
到目前为止,我使用了AlarmManager及其方法 setRepeating(),间隔为 24 小时。AlarmManager 启动一个Service。在此服务中,我正在下载数据、检查条件以及是否为真 - 显示Notification。由于下载可能会持续超过 5 秒,因此我已android:process=":background"
为此服务声明,在单独的进程中运行它并且不会阻塞我的 UI。
这种方法有两个缺点:
1:如果用户在下午4点打开应用程序(并且条件为真),他将立即收到通知。来自setRepeating () 文档:
如果时间发生在过去,将立即触发警报,警报计数取决于触发时间相对于重复间隔过去多长时间。
我希望该用户今天不会收到通知,只会在第二天收到通知,依此类推。
2:我担心用户关闭手机后我的通知不会显示。来自AlarmManager文档:
注册的闹钟在设备处于睡眠状态时会保留(并且可以选择在此期间唤醒设备,如果它们在此期间关闭),但如果它被关闭并重新启动,则会被清除。
我不知道是否有可能让它一直工作。
如果您有任何想法如何使它变得更好,欢迎您。