{"version":"0.1.0","code":"0000","result":true,"message":"处理成功","errdetail":"","timestamp":1671516375749,"data":{"id":71712204,"title":"8.2.5.2 检测云端城市数据列表","slug":"mk563s","format":"lake","bookId":26046811,"body":null,"body_draft":null,"body_html":"
每次启动软件和进入离线地图数据页面时,客户端触发检测云端城市数据列表,将上报需检查更新的城市及每个城市子文件的数据版本。服务端根据上报的版本信息判断下发增量包还是全量包,以及包大小等相关的信息。
com.autonavi.gbl.data.model.DownLoadMode
在线下载/更新时,都应该使用 DOWNLOAD_MODE_NET(网络下载)。
com.autonavi.gbl.data.observer.IDataListObserver
请求检测云端城市数据列表时,必须设置请求数据列表观察者,否则将请求失败。
int com.autonavi.gbl.data.MapDataService.setRequestDataList(@DownLoadMode.DownLoadMode1 int downLoadMode, ArrayList<Integer> adcodeList)
数据更新时,引擎先将本地已有数据读取创建出城市和版本list,然后将list作为请求发服务比对版本,目前车机项目多是罐装了全国数据,因此这个请求list会有约200K的文件,在开机时常会出现网络不佳的情况,无法及时完成200k文件的传输。调用该接口可以限制引擎将本地已有数据读取创建出城市和版本的list大小,一般设置当前城市及其周边几个城市即可。
int com.autonavi.gbl.data.MapDataService.requestDataListCheck(@DownLoadMode.DownLoadMode1 int downLoadMode, String path, IDataListObserver pObserver)
备注:requestDataListCheck在断网,弱网,网络请求失败没有回调
void com.autonavi.gbl.data.MapDataService.abortRequestDataListCheck(@DownLoadMode.DownLoadMode1 int downLoadMode)
说明:函数详情,请复制函数名称到在线API搜索
class DataListObserver implements IDataListObserver {\n @Override\n public void onRequestDataListCheck(@DownLoadMode.DownLoadMode1 final int downLoadMode, @DataType.DataType1 final int\n dataType, int opCode) {\n // 上层业务处理,转前端线程\n runOnUiThread(new Runnable() {\n @Override\n public void run() {\n MapDataService mapDataService = ServiceMgr.getBLService(SingleServiceID.MapDataSingleServiceID);\n if (DownLoadMode.DOWNLOAD_MODE_NET==downloadMode && DataType.DATA_TYPE_MAP==dataType)\n {\n // 判断服务器是否发生新增部署的行为\n boolean isDataUpdatedOnServer = mapDataService.isDataUpdatedOnServer(DownLoadMode.DOWNLOAD_MODE_NET);\n if (isDataUpdatedOnServer){\n // UI文案显示红点,表示云端数据更新\n }\n // 获取城市数据信息更新UI控件文案信息,获取城市数据信息将在后序文档《获取云端城市数据信息》中介绍\n updateCityData();\n }\n }\n });\n }\n}
class DataInitObserver implements IDataInitObserver {\n public void onInit(@DownLoadMode.DownLoadMode1 int downLoadMode, @DataType.DataType1 int dataType,\n int opCode) {\n // 转UI线程处理回调\n runOnUiThread(new Runnable() {\n @Override\n public void run() {\n // 初始化回调业务处理,请看《初始化 & 反初始化文档》\n\n if (OPERATION_ERR_CODE_CORRECT == opCode){\n MapDataService mapDataService = ServiceMgr.getBLService(SingleServiceID.MapDataSingleServiceID);\n\n IDataListObserver dataListObserver = new DataListObserver();\n mapDataService.requestDataListCheck(DOWNLOAD_MODE_NET, "", dataListObserver);\n }\n });\n }\n|
若退出下载界面时,需要中断检测
getMapDataService().abortRequestDataListCheck(DOWNLOAD_MODE_NET);
在接收到onRequestDataListCheck后,可通过isDataUpdatedOnServer判断服务器是否存在更新部署的行为
boolean mboolean = getMapDataService().isDataUpdatedOnServer(DOWNLOAD_MODE_NET);
注意:该接口仅在服务端有数据更新后,且第一次调用 com.autonavi.gbl.data.MapDataService.requestDataListCheck 后返回true,后续调用com.autonavi.gbl.data.MapDataService.requestDataListCheck 后,由于已经将服务端的更新信息拉回到本地了,故不再返回true。