我打算开发一个小型J2ME实用程序,用于使用手机查看本地公共交通时刻表。这些数据部分主要是一大堆数字,代表公交车到达或离开的时间。
我想弄清楚的是存储这些数据的最佳方法是什么。表示需要
routes.dat
,times.dat
, ......,agencies.dat
)和不(schedule_111.dat
,schedule_112.dat
,...)换句话说,如果你不得不将大部分GTFS - 像数据一样挤入移动设备,你会怎么做?
Google Protocol Buffers似乎是定义数据的理想选择,但它没有随机访问权。
你会建议什么?
答案 0 :(得分:2)
J2ME上的持久存储是一件棘手的事情;有关更一般的背景,请参阅此相关问题:Best practice for storing large amounts of data with J2ME
根据我的经验,J2ME持久存储倾向于使用许多小记录而不是几个单片记录来最佳/最可靠地工作。想想程序将如何访问数据,然后尝试将其存储在J2ME持久存储中的那些增量中。
我通常建议将客户端 - 服务器协议解耦,以便从设备上的存储格式下载更新。您可以在每次代码更新时更改后者,但是您几乎永远不会支持客户端 - 服务器协议,除非您想要在现场打破旧客户端。
最后,我知道Transit Developers group有些人在J2ME中构建了离线传输应用程序,因此值得在那里寻求提示。
答案 1 :(得分:1)
我做了这样的app,我使用了用php生成的xml-s。这使我们能够为3个表示层提供单一的提供程序:
我们使用xslt将xml转换为网站上的html和kXML - 非常轻松的解析器在j2me app上执行。即使在具有黑白屏幕和少量内存的非常旧的手机上也能很好地工作。
除了j2me之外,没有文件的概念。您有可以存储信息的数据库。 这是“移动”网站的链接。 http://mobi.krakow.pl/rozklady/
以及此处的应用: http://www.mobi.krakow.pl/rozklady/j2me/rjk.jar
这很精彩,但我认为要弄清楚这是什么并不难。
如果您愿意,我可以为您提供更多帮助和建议,或者如果这是商业产品,那么我认为我们也可以找到一些东西;)
答案 2 :(得分:1)
我认为您的问题是要求2。
更新10MB的数据只是因为在文件中间某处改变了4位数字似乎非常低效。
将数据拆分为多个文件可以获得更好的更新粒度,这非常值得增加代码的复杂性。
实时公共交通时刻表通常一次修改一辆公共汽车/火车/有轨电车。