我已经编写了一个应用程序来查询我编写的web服务(它返回JSON数据)。我的应用程序当前使用AsyncTask处理web服务调用,并使用接收到的数据更新TableLayout。我希望我的应用程序定期(大约每秒)调用此web服务,并在数据库中显示数据,因为它正在不断更新。我怎样才能在没有UI线程阻塞的情况下这样做呢?
目前的工作方式是用户按下"go“按钮,当请求处理时,AsyncTask会显示一个”work“对话框。我希望他们按下go按钮一次,并在布局中刷新数据。我不确定最好的架构方式是什么。
发布于 2011-06-28 02:51:48
我不建议您每秒创建一个新的AsyncTask,因为这将导致大量的对象创建和相应的内存收集。
相反,您可以创建一个AsyncTask,在每个请求从web服务返回后更新一些内部数据结构,然后调用publishProgress(),等待适当的时间,然后向web服务发出新的请求。在onPublishProgress()中,无论使用什么内部结构,代码都应该从请求中获取新信息(不要忘记在这里使用锁来同步访问),并刷新UI。
您还希望AsyncTask有一个方法或变量,Activity可以调用这些方法或变量来告诉它跳出循环。
发布于 2011-06-24 02:04:47
您可以使用每秒后都会发起新的AsyncTask请求的Handler。
https://stackoverflow.com/questions/6457847
复制相似问题