public void addTask(string url, int resType, LoadFinishBack callback = null, Type types = null, int priority = 0, LoadFinishBack errorback = null) { if (okBackList.ContainsKey(url)) { addFinishBack(url, callback); return; } if (ResPool.instance.hasLoadedRes(url)) {//已加载 callFinishBack(url); remove(url, okBackList); if (callback != null) { callback(url); } return; } LoadItem item = new LoadItem(); item.url = url; item.types = types; item.resType = resType; item.priority = priority * MAX_OFFET_PRIORITY + offetPriority; offetPriority--; waitList.Add(item); if (!isLoading) { loadNext(); } }
/**取消加载**/ public void unloadRes(String url, LoadFinishBack callback) { if (StringUtils.isEmpty(url)) { return; } if (!loadingList.ContainsKey(url)) { return; } IList <LoadItem> list = loadingList[url]; foreach (LoadItem item in list) { if (item.url.Equals(url) && item.callback == callback) { binLoadMgr.unload(item); list.Remove(item); item.dispose(); break; } } if (list.Count < 1) { removeProgress(url); loadingList.Remove(url); } }
internal void dispose() { str = null; url = null; args = null; www = null; types = null; callback = null; errorback = null; }
/**加载资源 * @param url 加载地址 * @param resType 资源类型 * @param callback 加载成功回调 callback(url,args) * @param priority 加载优先级,数字越大越早加载 * @param errorback 加载失败回调 errorback(url,args) * @param args 其它参数 */ public bool loadRes(string url, int resType, LoadFinishBack callback = null, int priority = 0, LoadFinishBack errorback = null, object[] args = null) { if (StringUtils.isEmpty(url)) { return(false); } //A-1 内存镜像已有 if (ResPool.instance.hasLoadedRes(url)) { if (binLoadMgr.isTrace) { Log.info(this, "-loadRes() url:" + url + " 缓存已有!"); } if (callback != null) { callback(url, args); } return(true); } //A-2 不指定优先级,从默认配置项取 if (priority < 1) { priority = typeConfigList.ContainsKey(resType) ? typeConfigList[resType] : ResPriority.LOW; } LoadItem item = new LoadItem(); item.url = url; item.args = args; item.resType = resType; item.priority = priority; item.callback = callback; item.errorback = errorback; if (loadingList.ContainsKey(url)) { loadingList[url].Add(item); } else { loadingList.Add(url, new List <LoadItem>()); loadingList[url].Add(item); binLoadMgr.addTask(item); // 这个很重要,将要下载的item 放进 BinLoadMgr 去排队下载; } if (binLoadMgr.isTrace) { Log.info(this, "-loadRes() url:" + url + " 已放入加载队列!"); } return(true); }
private void addErrorBack(string url, LoadFinishBack errorback) { if (errorback == null) { return; } IList <LoadFinishBack> list = errorBackList.ContainsKey(url) ? errorBackList[url] : null; if (list == null) { list = new List <LoadFinishBack>(); errorBackList.Add(url, list); } list.Add(errorback); }
private void addFinishBack(string url, LoadFinishBack callback) { if (callback == null) { return; } IList <LoadFinishBack> list = okBackList.ContainsKey(url) ? okBackList[url] : null; if (list == null) { list = new List <LoadFinishBack>(); okBackList.Add(url, list); } list.Add(callback); }