我有一个应用程序,它允许用户安排闹钟在特定时间响起,并在他们选择的时间间隔内重复。我使用 JSON 来保存警报详细信息,使用 SharedPreferences 作为存储。
我正在使用 AlarmManager 安排何时应通知我的应用程序应发出警报以通知用户。我目前正在使用 AlarmManager 的 setRepeating() 方法,提供用户提供的间隔。这很好用,理论上应用程序永远不需要更新存储下一个闹钟时间的 JSon,因为 AlarmManager 只会使用间隔重新安排下一个闹钟时间。
但是,我的想法是,当设备重新启动时,我需要向 AlarmManager 提供最新的警报时间,以避免 AlarmManager 认为错过了警报,因为不一定是这种情况。
那么,最好的方法是什么?
- 当警报响起时更新 JSon 下一个警报时间,即使这可能不是必需的(只要没有重新启动,setRepeating() 就会处理这个)?
- 注册并收听关机广播,然后更新 JSon(这引发了一些问题 - 考虑到手机正在关机,应用程序将计算多长时间并将警报详细信息写入存储)?
- 不要更新 JSon,而是向 AlarmManager唤醒的对象添加逻辑,以确定刚刚广播的警报是否有效并且应该提醒用户?
我确信上述任何方法都可以,但我无法决定哪种方法最好。