{"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":"

场景图

每次启动软件和进入离线地图数据页面时,客户端触发检测云端城市数据列表,将上报需检查更新的城市及每个城市子文件的数据版本。服务端根据上报的版本信息判断下发增量包还是全量包,以及包大小等相关的信息。

\"image.png\"

时序图

初始化 & 反初始化

获取云端城市数据信息

关键参数

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。


","body_lake":null,"pub_level":null,"status":"0","updated_at":"2022-04-06 07:05:06","deleted_at":null,"nameSpace":"mnlcaa/v610","browseCount":116,"collectCount":0,"estimateDate":7,"docStatus":0,"permissions":true,"overView":false}}