正确的工作流程从互联网检索数据并在Listview中显示

对我来说,diffucult是理解哪个正确的工作流程是下载json数据并在ListView中显示它们的。 目前我正在使用AsyncTask来下载和分析使用ArrayAdapter显示的数据。 问题是AsyncTask不能存活到重新启动活动。

所以我想知道如果服务是一个更好的解决方案,但如何将数据传递给ArrayAdapter? 我应该总是使用数据库作为中间层来存储和检索数据?

那哪个更好? AsyncTask保留片段或服务使用db?

谢谢


我使用服务来执行http数据检索和存储到sqlite数据库。 一旦服务存储了数据(或者如果有问题),我就会播放广播。 我的碎片/活动监听这些定义的广播,然后采取适当的行动。

我发现这是一个非常干净的解决方案,并且避免了在活动拆解/旋转等方面泄露异类引用的问题。


最简单的解决方案是在onRetainNonConfigurationInstance返回当前的AsyncTask,或者通过setRetainInstance(true)使用片段。

您可以通过getLastNonConfigurationInstance访问inCreate中的AsyncTask


它实际上取决于活动需要什么的要求,以及在没有再次访问服务的情况下可以显示多长时间的数据。

解决上述问题的一种方法是,打到服务中获取json数据并将其存储在数据库中。 现在从数据库中获取数据并将其显示在活动中。 您现在可以实施一项服务以在需要时刷新数据。 该服务只需打开Web服务并根据需要更新您的数据库内容。

链接地址: http://www.djcxy.com/p/64589.html

上一篇: Correct workflow to retrieve data from internet and show in a Listview

下一篇: Update ListView after initialising CursorAdapter