Android实时查询Web服务

时间:2011-06-23 16:59:03

标签: android real-time android-asynctask tablelayout

我编写了一个应用程序,用于查询我编写的Web服务(返回JSON数据)。我的应用程序当前使用AsyncTask处理Web服务调用,并使用它接收的数据更新TableLayout。我希望我的应用程序定期(每隔一秒左右)调用此Web服务并在数据库中显示数据,因为它会不断更新。如何在没有UI线程块的情况下执行此操作?

目前,工作方式是用户按下“go”按钮,AsyncTask在请求处理时显示“加载”对话框。我想让他们按一下go按钮并在布局中刷新数据。我不确定建立这个的最佳方法是什么。

2 个答案:

答案 0 :(得分:1)

我不建议您每秒创建一个新的AsyncTask,因为这将导致大量对象创建和相应的内存收集。

你可以做的是创建一个AsyncTask,每个请求从Web服务返回后更新一些内部数据结构,然后调用publishProgress(),等待适当的时间,然后创建一个新的请求Web服务。在onPublishProgress()中,代码应该从正在使用的任何内部结构的请求中获取新信息(不要忘记在此使用锁来同步访问)并刷新UI。

您还希望AsyncTask拥有Activity可以调用的方法或变量,以告诉它突破循环。

答案 1 :(得分:0)

您可以使用Handler,它可以在每秒后发起一个新的AsyncTask请求。