You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在HERE SDK Navigate Edition(4.13.2.0)中序列化保存Route实例

在HERE SDK Navigate Edition中序列化Route实例的方案

新版HERE SDK Navigate Edition的com.here.sdk.routing.Route类提供了官方原生的序列化/反序列化方法,不用依赖Gson这类第三方工具,具体实现如下:

保存Route实例

用Route自带的serialize()方法把Route转成字节数组,再转成Base64字符串就能存入SharedPreferences了:

// 将Route序列化为字节数组
val routeBytes = route?.serialize() ?: byteArrayOf()
// 转成Base64字符串方便存储
val routeBase64 = Base64.encodeToString(routeBytes, Base64.DEFAULT)
// 写入SharedPreferences
SharedPrefs.edit().putString(PREFS_ROUTE_KEY, routeBase64).apply()

读取并还原Route实例

从SharedPreferences取出Base64字符串,解码成字节数组后,用Route.deserialize()方法还原Route:

val routeBase64 = SharedPrefs.getString(PREFS_ROUTE_KEY, null) ?: return
val routeBytes = Base64.decode(routeBase64, Base64.DEFAULT)
// 反序列化得到Route实例
val route = Route.deserialize(routeBytes)

几点要注意的地方

  • 一定要用SDK自带的这两个方法,官方维护的兼容性更可靠,别再用Gson硬转了——Route类没有暴露足够的可序列化字段,Gson转出来的内容根本没法正常还原出可用的Route实例。
  • 序列化后的字节数组只保证在同一个SDK版本里能正常反序列化,跨版本使用大概率会出错。如果需要长期存储或者跨版本兼容,建议存Route的途经点、起点终点坐标这些关键参数,之后用这些参数重新规划路线,比直接存Route实例靠谱。

内容的提问来源于stack exchange,提问作者Serggio Lysenko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 17:13:26