飞溅屏幕上的Android异步任务

问题描述:

我正在开发一个项目。希望此应用的用户不希望智能手机访问数据库。所以他们在线放置XML文件。首次安装应用程序时,我在本地sqlite数据库中读取xml,以便它们可以脱机访问数据。飞溅屏幕上的Android异步任务

现在将xml文件加载到sqlite中。加载xml文件并不需要很长时间,但是足够长的时间才能将其放入到异步任务中。现在我不知道在一个异步任务中做出闪屏并运行xml解析是否聪明。或者如果我需要在其他时间这样做?

有没有人有解决方案?

谢谢!

+0

应用程序是否在没有数据的情况下运行?如果*不是*它应该可能是一个'AsyncTask'并且在进行初始准备时在屏幕上显示进度更新/闪屏。 – Jens 2012-02-29 08:40:33

+0

不,你需要这些数据。所以我第一次将数据加载到asynctask上。并给用户反馈一个进度条..感谢您的快速回复! – 2012-02-29 08:44:57

首先,当然任何包含网络和数据库查询的操作应该在单独的线程中完成(使用AsyncTask是个好主意)。然后,有实现你的逻辑有两种方式:

  1. 如果说之前的数据取出,并放置到DB用户可以做什么与你的应用程序,你应该表现出某种ProgressDialog告诉你的用户,你的应用程序正在为这项工作做好准备。
  2. 如果有其他选项不需要来自Internet的数据,则必须在后台完全运行数据获取操作,让用户与应用程序进行交互。

希望这会有所帮助。

+0

如果我将xml文件放在应用程序中,这是个好主意吗?所以当他们没有互联网访问时,我可以解析XML文件。 (并让他们知道他们有一个旧版本的数据库)但他们可以使用该应用程序。当他们访问互联网时,我会检查更新? – 2012-02-29 08:57:12

+0

与数字1你的意思也有点与进度条/对话的飞溅? – 2012-02-29 08:58:04

+0

@ user1110599,如果你的应用程序的逻辑允许它 - 确定你可以。另外,我建议您实施服务和广播接收器来收听连接信息。当用户连接到网络时,该服务可以在后台下载数据,以便在用户打开应用程序时准备好应用程序。 – Egor 2012-02-29 08:59:19

我认为这取决于你将如何处理一个错误,比如你的服务器关闭了,或者用户的网络连接出了问题。 Splashscreen可以加载显示活动本身所需的资源,但我认为不要让用户在后台运行AsyncTask s,这会让你的应用程序看起来很慢=>不好的用户体验。

+0

这实际上是我害怕的。但是没有数据,应用程序就无法工作。所以我需要做出选择。目前我没有看到另一个解决方案,然后飞溅。你会如何解决这个问题? – 2012-02-29 08:52:16

+0

我想你应该和那些“想要应用程序”的人交谈,如果没有连接,他们觉得应用程序中什么都不显示。他们希望你缓存你得到的最后一个xml吗?你只需要拉一个更新的版本并更新你的UI。无论如何,卡在屏幕上并不是一个好的理念,所以不要这样做。 – 2012-02-29 09:03:04