1

我正计划开发一个小型 J2ME 实用程序,用于使用手机查看当地公共交通时刻表。这些数据部分主要是一大堆数字,代表公共汽车到达或离开的时间。

我想弄清楚的是存储该数据的最佳方式是什么。表示需要

  1. 相当小(由于手机的持久存储限制)
  2. 适合单个文件(以便之后通过 HTTP 更新计划数据库)适合恒定数量的文件,即 ( routes.dat, times.dat, ..., agencies.dat),而不是( schedule_111.dat, schedule_112.dat, ...)
  3. 具有随机访问能力(将整个数据对象反序列化到内存中对于手机来说太多了:))
  4. 如果有一些用于访问该数据格式的库,则应该存在 Java 实现

换句话说,如果你必须将大部分类似于 GTFS的数据压缩到移动设备中,你会怎么做?

Google Protocol Buffers似乎是定义数据的好选择,但它没有随机访问。

你有什么建议?

4

3 回答 3

2

J2ME 上的持久存储是一项棘手的工作。有关更一般的背景,请参阅此相关问题:使用 J2ME 存储大量数据的最佳实践

以我的经验,J2ME 持久存储往往在处理许多小记录而不是一些单一的记录时工作得最好/最可靠。考虑程序将如何访问数据,然后尝试将其以增量方式存储在 J2ME 持久存储中。

我通常建议解耦您的客户端-服务器协议,以便从设备上的存储格式下载更新。您可以在每次代码更新时更改后者,但您几乎永远无法支持客户端-服务器协议,除非您想在现场打破旧客户端。

最后,我知道Transit Developers 小组中有一些人在 J2ME 中构建了离线交通应用程序,因此值得在那里寻求提示。

于 2009-11-08T22:03:24.193 回答
1

我制作了这样的应用程序,并使用了用 php 生成的 xml-s。这使我们能够为 3 个表示层提供单个提供程序,它们是:

  • j2me 应用程序
  • 手机网站
  • 常用网站

我们使用 xslt 在网站上将 xml 转换为 html,并使用 kXML - 非常轻量级的拉式解析器在 j2me 应用程序上执行此操作。即使在带有黑白屏幕和少量内存的非常旧的手机上,这也能很好地工作。

此外在 j2me 上没有文件的概念。您拥有可以存储信息的数据库。这是“移动”网站的链接。 http://mobi.krakow.pl/rozklady/

在这里应用程序: http ://www.mobi.krakow.pl/rozklady/j2me/rjk.jar

这是波兰语,但我认为不难弄清楚这个和那个是什么。

如果您愿意,我可以为您提供更多帮助和建议,或者如果这是一个商业产品,那么我认为我们也可以找出一些东西;)

于 2009-11-01T21:11:12.220 回答
1

我认为您的问题是要求 2。

仅仅因为文件中间某处更改了 4 位数字而更新 10MB 数据似乎效率非常低。

将数据拆分为多个文件可以实现更好的更新粒度,这非常值得增加代码复杂性。

实时公共交通时刻表通常一次修改一条公共汽车/火车/有轨电车线路。

于 2009-11-02T12:12:58.603 回答