异步重复计划任务

时间:2012-10-29 04:20:25

标签: android android-asynctask

如何创建一个AsyncTask,它会在固定的时间间隔后继续运行。

例如。每隔5分钟从服务器获取数据,并将通知提供给调用者线程,表明它已收到数据。我在论坛上搜索但找不到多少。到目前为止我收集的是

1)UI线程将调用AsyncTask

2)onPrExecute用于执行

之前的UI线程访问

3)OnPostExecute执行

后的UI线程访问

我不需要向用户显示任何进度更新。此外,应用程序关闭时,任务将被销毁。任何教程都有用吗

4 个答案:

答案 0 :(得分:2)

正如其他人在评论中所建议的那样。所以让我详细说明一下。

不要使用AsyncTask。 INSTEAD仅适用于IntentService。

  1. 让类扩展IntentService
  2. 使用警报管理器通过特定操作项触发您自己服务的意图
  3. 定义用于通知客户端此服务的接口。
  4. 维护其客户端提供的这些接口实现对象的列表。
  5. onLandleIntent(Intent intent)中的
  6. 通过检查操作来识别调用。
  7. 直接在intentService上启动数据提取请求,作为使用工作线程工作,并在最后调用您维护的接口对象列表的更新委托。

  8. 制作允许活动注册和取消注册以监听这些更新的方法。

  9. 实际上是在您维护的列表中添加了由它们提供的接口实现,并在调用取消注册时将其从中删除。
  10. 确保活动在onResume中注册自己,并在onPause中取消注册。
  11. 在单次操作运行结束时使用重复警报或再次启动警报。 我希望它有所帮助:)

答案 1 :(得分:0)

您可以使用Timer.scheduleAtFixedRate安排AsyncTask以固定费率重复。

答案 2 :(得分:0)

试试这个..

- 更好地利用Service一次又一次地完成这项工作。

- 现在您可以使用绑定或未绑定 Service。如果您希望将Service绑定到Activity,则使用Bound Service,否则使用UnBound Service。

- 如果使用IntentService会更好,那么不需要任务继续运行,但会在一定时间后运行。

请参阅此链接:

http://mobile.tutsplus.com/tutorials/android/android-fundamentals-intentservice-basics/

答案 3 :(得分:0)

我写了一个定期触发AsyncTask s的应用,除非它们在应用关闭时仍然存在。无论如何,这就是我必须做的事情:

  1. 创建一个PendingIntent(通过getBroadcast()),其中包含一个包含操作的Intent
  2. PendingIntent提供给系统的AlarmManager并设置间隔。
  3. 在清单中声明BroadcastReceiver以捕获提供给Intent的操作字符串。 1。
  4. onReceive()的{​​{1}}方法中,点击BroadcastReceiver