转:http://forum.cocos.com/t/ccdownloader-bug/44932
cocos2dx自己实现的热更机制里使用了CCDownloader, 但是自带的热更并不灵活。 所以做项目一般都会自己实现一份。 但是直接用HttpRequest的话, 多线程下载支持的并不好。 所以把CCDownloader导出到lua, 给我们自己的热更模块使用。
在使用的过程中发现一个问题——当创建的任务数大于CCDownloader的线程数时, 而任务类型又是DataTask时, CCDownloader只能下载n个文件 然后没有然后了, 其中n=线程数。 CCDownloader默认是6线程的。 我们的热更分2种, 其中一种是后台静默下载, 为了保证流畅性, 静默下载只使用了一个线程。 这导致我们创建了n个任务后, 下载了一个文件就停止了。解决方案:Cocos2dxDownloader.java里的FileTaskHandler重载了onFinish 并且调用了 _downloader.runNextTaskIfExists(); 而DataTaskHandler并没有重载onFinish 。 直接在DataTaskHandler加上
@Override
public void onFinish() {
// onFinish called after onSuccess/onFailure
_downloader.runNextTaskIfExists();
}