我应该使用哪种类类型的AlarmManager



我正在构建一个应用程序,它将以这种方式工作:启用移动数据或Wifi (Wifi,如果复选框被选中)每X分钟Y分钟(s),然后禁用它。

我做了什么:

  • MainActivity:设置一个AlarmManager(带setRepeating)执行AlarmService每隔X分钟。
  • AlarmService:启用移动数据或Wifi然后设置一个新的AlarmManager在Y分钟内调用DisableMD
  • DisableMD:禁用移动数据或Wifi

MainActivity为活动,AlarmServiceDisableMD为服务。

我的问题:

    在这种情况下,服务是最好的方法吗?服务在后台运行,我不需要它。我只需要AlarmManager调用一个类,它将执行一个动作一次(打开/关闭移动数据)。AlarmManager是每次都创建一个新的服务还是只创建一次?
  1. 我需要AlarmServiceMainActivity中更新TextView与最后执行的时间,AlarmServiceMainActivity中获取复选框的值(true或false)。实现一个信使是非常令人困惑的,这也是我不想在这种情况下使用服务的原因之一。

所以,伙计们,你能回答我的问题和/或告诉我在我的应用程序的"架构"要改变什么?由于

  1. 实际上需要在后台运行代码,似乎(只是不连续)。你是对的,Service可能不是严格必要的。如果您的操作非常快,您可以将其放入BroadcastReceiver中。这个其他SO线程也可能有所帮助。如果你的工作需要大量的时间,Service可能是你最好的选择。
  2. 一般来说,当你调用Service的意图,相同的Service将被重用,如果它仍然活着从上次。您需要阅读Service的文档。生命周期信息在这里可能特别相关。
  3. 你实际上不需要你的AlarmServiceMainActivity的UI交互。看起来你想要的是你的MainActivity设置你是在处理WiFi还是移动数据,让它显示最后一次执行时间,让AlarmService设置最后一次执行时间,让它读取你是在处理WiFi还是移动数据。从本质上讲,您有两个要从MainActivityAlarmService读取和写入的设置。考虑简单地将这些存储在SharedPreferences中。这样可以避免在MainActivityAlarmService之间直接通信。

最新更新