1

我需要经常使用 JSON 网络服务(每 5.10 秒最多)。

为了测试目的,我在 AsyncTask 中实现了 web 服务调用,每当我按下按钮时都会执行该调用。

我应该使用 Handlers、Timers 还是 AlarmManager?

我有点困惑,因为 AsyncTask 创建了自己的线程,但是这些方法中的任何一个都不会创建另一个线程,从而创建一个将创建另一个线程的线程吗?

我使用 AsyncTask 实现了它,因为每当 web 服务调用出现问题时,我无法让应用程序挂起,所以如果第一次调用失败,如果第二次调用成功,应该没有任何问题,我正在获取的数据将第二次执行任务时出现。

(GCM 可能是一个解决方案,但现在我需要使用轮询而不是通知..)

提前致谢

4

3 回答 3

1

我建议您使用Handler.postDelay(Runnable r,long delayMillis)并在所需延迟后再次启动您的流程。

于 2013-03-19T16:13:50.137 回答
1

处理程序不会创建新线程,它们发生在 UI 线程上。因此,您不能对其执行 HTTP 请求。

我实际上不会为您的用例建议 AsyncTasks。您将收到无序完成的请求。此外,根据您运行的操作系统版本,它们可能并行运行,也可能不并行运行。

我对你的建议是使用线程。它们存在于 Android 中,如果您希望在 Activity 处于前台时连续运行某些东西,并且您只需要担心一件事而不是 N 个任务,它们是卸载的首选方法。(如果你想在不在前台时运行它,你需要一个服务)。

于 2013-03-19T16:13:57.543 回答
0

我从这里找到了很棒的教程

https://www.thepolyglotdeveloper.com/2014/10/use-broadcast-receiver-background-services-android/

服务将每隔 30 分钟定期在后台运行。根据需求改变它。

愿它对你有所帮助。

于 2015-04-13T11:55:36.117 回答