我有google地图应用程序,因为googlemaps没有提供api来在Android上创建地图路线,我正在使用WebApi来获取路线。 我在ArrayList中存储路由,然后通过Intent传递到我的drow路线的活动中。如果LatLng对象少于2000它运行良好,否则如果它超过2000个对象然后我有Java Binder异常,也许Intent有限制大小。 要处理超过2000个对象的情况,我将LatLng纬度和经度保存到文件并仅传递路径,然后在activity i load file中。但是这个文件非常大~0.5-3 mB。 我怎么能解决我的问题,或者我如何用双值压缩我的arraylist?
答案 0 :(得分:1)
一些想法
答案 1 :(得分:0)
您可以将数据压缩为ZipOutputStream并将其作为原始字节传递或通过ZipFile使用。如果值更频繁地出现,压缩应该非常好。
答案 2 :(得分:0)
确保在写入数据时不浪费空间。不要使用text / ASCII / XML数据结构/文件来存储数据。
使用DataOutputStream
和writeDouble(..)
方法写入数据(结果:每个double值8个字节)。或者,您可以将double值转换为float并通过writeFloat(..)
写入它们 - 这会使要写入的数据减半。通常,为了在地图上显示点,浮点数仍然足够精确。
阅读当然是使用DataInputStream
来反过来。
压缩也是一种选择,但最好是最小化要写入的数据,因为压缩会占用大量CPU资源,这意味着它会消耗功率和时间。