2012-03-17 187 views
2

我是Android开发新手,想要创建Google地图应用。我必须使用2个大的XML文件和地理数据(latlons),1是2mb,其他8mb大。在Android中处理大型XML文件

什么是访问和解析这些数据的最快方法?这可能是存储在数据库中的吗?我认为web服务不是一个好主意,因为每次应用程序都会启动,我必须加载10 MB ...而且这会处理非常慢的我猜...

有没有人有一些很好的建议?

谢谢!

+0

Web服务**是一个好主意。由于下载的大小以及可能较慢的加载时间,将数据加载到您的Android应用程序中会吸引人。 – 2012-03-17 07:27:31

回答

2

将整个数据保存在服务器中,并使用webservices从设备访问它。由于数据太大,最好去SAX解析器。如果可能,最好从服务器端实现搜索功能或从服务器端实现分页。

1

也许你可以创建一些类型的元数据与大型XML文件一起去。这个元数据可以指向大型XML文件的特定部分。每个小部分可以是一个dom对象而不是sax解析器。

我建议使用sax,在某种类型的散列表(简单键值对)中创建您需要的数据摘要并使用它。可能会将SharedPreferences用于不会更改的数据。

此外,您还需要考虑如何/将使用哪些数据以及使用频率。也许你可以保留一个生产者消费者体系结构,一个线程准备数据供用户使用,而消费者在准备好通知或其他东西时使用它。

你需要从3个角度

  • 没有太多的串行处理想
  • 没有重做你所使用数据的右量子已经被解析
  • 解析。事实上,想象一下小部件的dom可以让你的设计更容易开始。

而我不推荐整个树的DOM。您需要使用SAX和DOM的组合。

首先让它工作,然后记录响应/性能延迟并按照自己的方式将其从最坏的状态改善到最佳状态。