我正在构建一个可以这样工作的应用:启用移动数据或Wifi(如果选中复选框,则为WiFi)每隔X分钟为Y分钟,然后禁用它。
我做了什么:
MainActivity
:设置AlarmManager
(setRepeating
)来执行
每X分钟AlarmService
。 AlarmService
:启用移动数据或Wifi
然后设置新的AlarmManager
以在Y分钟内调用DisableMD
DisableMD
:停用移动数据或Wifi MainActivity
是一项活动,AlarmService
和DisableMD
是服务。
我的问题:
AlarmManager
来调用一个将执行一次操作的类(打开/关闭移动数据)。AlarmManager
每次或仅一次创建一个新服务吗?AlarmService
更新TextView
中MainActivity
的上次执行时间和AlarmService
来获取复选框的值(true或false)在MainActivity
。实现Messenger实在令人困惑,这也是我在这种情况下不想要服务的原因之一。那么伙计们,你能否回答我的问题和/或告诉我在我的应用程序的“架构”中要改变什么? 感谢
答案 0 :(得分:1)
Service
可能不是必需的。如果您的操作非常快,则可以将其放入BroadcastReceiver
。 This其他SO线程也可能有所帮助。如果您的工作花费了大量时间,Service
可能是您的最佳选择。Service
时,如果上一次仍然有效,则会重复使用相同的Service
。您需要阅读docs for Service
。生命周期信息在这里可能特别相关。AlarmService
与您的MainActivity
用户界面进行互动。您想要的是MainActivity
设置您是处理WiFi还是移动数据,以便显示上次执行时间,AlarmService
设置最后一次执行并让它读取您是处理WiFi还是移动数据。基本上,您有两个要从MainActivity
和AlarmService
读取和写入的设置。考虑将它们存储在SharedPreferences
中。您可以避免以这种方式在MainActivity
和AlarmService
之间直接沟通。