1

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

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

1) UI 线程将调用AsyncTask

2)onPrExecute用于执行前的 UI 线程访问

3)OnPostExecute用于执行后的 UI 线程访问

我不需要向用户显示任何进度更新。此外,当应用程序关闭时,任务将被销毁。任何这方面的教程都会有帮助

4

4 回答 4

2

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

不要使用异步任务。只选择 IntentService。

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

  7. 制作方法让活动注册和注销监听这些更新。

  8. 这实际上是将它们提供的接口实现添加到您维护的列表中,并在调用 unregister 时从中删除。
  9. 确保活动在 onResume 中注册并在 onPause 中取消注册。
  10. 使用重复警报或在单个操作运行结束时再次启动警报。我希望它有帮助:)
于 2012-10-29T04:42:01.643 回答
0

您可以使用Timer.scheduleAtFixedRateAsyncTask安排以固定速率重复。

于 2012-10-29T04:46:52.990 回答
0

试试这个..

-更好地使用Service,使这项工作一次又一次。

-现在您可以使用bound 或 unbound Service。如果您希望服务绑定到活动,则使用绑定服务,否则使用未绑定服务。

-如果使用会更好IntentService,因为在这里您不需要任务继续运行,而是在一定时间后运行。

请参阅此链接:

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

于 2012-10-29T04:55:52.993 回答
0

AsyncTask我编写了一个定期触发 s 的应用程序,但即使在应用程序关闭时它们仍然存在。无论如何,这就是我必须做的:

  1. 创建一个PendingIntent(via getBroadcast()),其中包含一个Intent包含一个动作的。
  2. 将 提供PendingIntent给系统AlarmManager并设置间隔。
  3. 在清单中声明 aBroadcastReceiver以捕获提供给Intentin no 的操作字符串。1.
  4. 用你的onReceive()方法BroadcastReceiver,开火AsyncTask
于 2012-10-29T05:08:43.647 回答