当应用程序退出时,在单独的线程中重复任务的方法是什么?

时间:2015-05-24 15:31:45

标签: android alarmmanager timertask

我需要检查是否没有互联网连接,存储数据以及一段时间检查互联网连接。如果存在,则发送数据,否则任务需要重复,直到出现互联网连接。当app处于前台模式时,需要完成这些检查,app处于后台模式,这些检查可以取消。

我想知道使用AlarmManagerTimerTask是个好主意吗?

在我看来AlarmManager是正确的解决方案,但即使应用程序处于后台模式也能正常工作。

1 个答案:

答案 0 :(得分:1)

我会按如下方式实现:

  1. 如果要通过网络发送数据,请检查是否存在互联网连接。
    1. 如果有,请发送数据。
    2. 如果没有将数据存储在某处。
  2. CONNECTIVITY_ACTION-event注册BroadcastReceiver。只要某些连接发生变化,就会调用此接收器。
  3. 调用接收器时,请检查连接并做出相应的反应。
  4. 如果您希望自己的应用仅在前台发送数据时,可以在应用“进入前景”时register使用BroadcastReceiver,并在“进入后台”时使用un-register

    确定应用程序是否位于前台是一个棘手的部分,取决于您如何定义它。如果您将其定义为“显示某个(一组)活动”,则可以在onStart()中注册并在onStop中取消注册。

    我的建议是在BoradcastReceiver中启动一个服务来处理数据的发送,即使应用程序不在前台。这样您就可以尽快发送数据,即使用户一段时间没有返回您的应用程序。