我需要检查是否没有互联网连接,存储数据以及一段时间检查互联网连接。如果存在,则发送数据,否则任务需要重复,直到出现互联网连接。当app处于前台模式时,需要完成这些检查,app处于后台模式,这些检查可以取消。
我想知道使用AlarmManager
或TimerTask
是个好主意吗?
在我看来AlarmManager
是正确的解决方案,但即使应用程序处于后台模式也能正常工作。
答案 0 :(得分:1)
我会按如下方式实现:
CONNECTIVITY_ACTION
-event注册BroadcastReceiver
。只要某些连接发生变化,就会调用此接收器。如果您希望自己的应用仅在前台发送数据时,可以在应用“进入前景”时register使用BroadcastReceiver,并在“进入后台”时使用un-register ”
确定应用程序是否位于前台是一个棘手的部分,取决于您如何定义它。如果您将其定义为“显示某个(一组)活动”,则可以在onStart()
中注册并在onStop
中取消注册。
我的建议是在BoradcastReceiver中启动一个服务来处理数据的发送,即使应用程序不在前台。这样您就可以尽快发送数据,即使用户一段时间没有返回您的应用程序。