我编写了一个应用程序,用于查询我编写的Web服务(返回JSON数据)。我的应用程序当前使用AsyncTask处理Web服务调用,并使用它接收的数据更新TableLayout。我希望我的应用程序定期(每隔一秒左右)调用此Web服务并在数据库中显示数据,因为它会不断更新。如何在没有UI线程块的情况下执行此操作?
目前,工作方式是用户按下“go”按钮,AsyncTask在请求处理时显示“加载”对话框。我想让他们按一下go按钮并在布局中刷新数据。我不确定建立这个的最佳方法是什么。
答案 0 :(得分:1)
我不建议您每秒创建一个新的AsyncTask
,因为这将导致大量对象创建和相应的内存收集。
你可以做的是创建一个AsyncTask
,每个请求从Web服务返回后更新一些内部数据结构,然后调用publishProgress()
,等待适当的时间,然后创建一个新的请求Web服务。在onPublishProgress()
中,代码应该从正在使用的任何内部结构的请求中获取新信息(不要忘记在此使用锁来同步访问)并刷新UI。
您还希望AsyncTask
拥有Activity
可以调用的方法或变量,以告诉它突破循环。
答案 1 :(得分:0)
您可以使用Handler,它可以在每秒后发起一个新的AsyncTask请求。