我要下载离线地图包。尝试从skobbler支持网站对该示例项目进行反向工程,但是在尝试开始下载时,下载管理器崩溃了。
我的用例是:显示可用国家/地区的列表(在欧洲大陆内),并让用户选择一个,并在那时下载。到目前为止,我已经得到了一个列表,其中提供了这些选项。选择项目(并开始下载)后,它会崩溃。
为了这个问题,我评论了一些事情。
相关代码:
// Get the information about where to obtain the files from
SKPackageURLInfo urlInfo = SKPackageManager.getInstance().getURLInfoForPackageWithCode(pack.packageCode);
// Steps: SKM, ZIP, TXG
List<SKToolsFileDownloadStep> downloadSteps = new ArrayList<>();
downloadSteps.add(new SKToolsFileDownloadStep(urlInfo.getMapURL(), pack.file, pack.skmsize)); // SKM
//downloadSteps.add(); // TODO ZIP
//downloadSteps.add()); // TODO TXG
List<SKToolsDownloadItem> downloadItems = new ArrayList<>(1);
downloadItems.add(new SKToolsDownloadItem(pack.packageCode, downloadSteps, SKToolsDownloadItem.QUEUED, true, true));
mDownloadManager.startDownload(downloadItems); // This is where the crash is
我注意到正在运行的下载,因为onDownloadProgress()被触发(来自管理器的回调)。然而,它作为参数的SKToolsDownloadItem表示stepIndex从0开始。我不知道这是怎么回事,因为我手动将它放在(byte)0,就像示例那样。
此外,日志会在SingleClientConnManager上发出警告,告诉我:
Invalid use of SingleClientConnManager: connection still allocated.
这是从管理器内部调用的代码。我在想文档和示例项目中缺少一些重要的设置步骤。