public override void configViews() { hideStatusBar(); decodeView = Window.DecorView; RelativeLayout.LayoutParams @params = (RelativeLayout.LayoutParams)mLlBookReadTop.LayoutParameters; @params.TopMargin = ScreenUtils.getStatusBarHeight(this) - 2; mLlBookReadTop.LayoutParameters = @params; initTocList(); initAASet(); initPagerWidget(); // 本地收藏 直接打开 if (isFromSD) { BookMixAToc.MixToc.Chapters chapters = new BookMixAToc.MixToc.Chapters(); chapters.title = recommendBooks.title; mChapterList.Add(chapters); showChapterRead(null, currentChapter); //本地书籍隐藏社区、简介、缓存按钮 gone(mTvBookReadCommunity, mTvBookReadChangeSource, mTvBookReadDownload); return; } getBookMixAToc(bookId, "chapters"); }
public /*synchronized*/ void downloadBook(DownloadQueue downloadQueue) { List <BookMixAToc.MixToc.Chapters> list = downloadQueue.list; string bookId = downloadQueue.bookId; int start = downloadQueue.start; // 起始章节 int end = downloadQueue.end; // 结束章节 int failureCount = 0; Task.Factory.StartNew(() => { try { Thread.Sleep(1000); } catch (InterruptedException e) { } for (int i = start; i <= end && i <= list.Count(); i++) { if (canceled) { break; } // 网络异常,取消下载 if (!NetworkUtils.isAvailable(AppUtils.getAppContext())) { downloadQueue.isCancel = true; Post(new DownloadMessage(bookId, GetString(Resource.String.book_read_download_error), true)); failureCount = -1; break; } if (!downloadQueue.isFinish && !downloadQueue.isCancel) { // 章节文件不存在,则下载,否则跳过 if (CacheManager.GetChapterFile(bookId, i) == null) { BookMixAToc.MixToc.Chapters chapters = list[i - 1]; string url = chapters.link; int ret = download(url, bookId, chapters.title, i, list.Count()); if (ret != 1) { failureCount++; } } else { Post(new DownloadProgress(bookId, Java.Lang.String.Format( GetString(Resource.String.book_read_alreday_download), list[i - 1].title, i, list.Count()), true)); } } } try { Thread.Sleep(500); } catch (InterruptedException e) { } return(failureCount); }).ContinueWith(task => { downloadQueue.isFinish = true; if (failureCount > -1) { // 完成通知 Post(new DownloadMessage(bookId, Java.Lang.String.Format(GetString(Resource.String.book_read_download_complete), failureCount), true)); } // 下载完成,从队列里移除 downloadQueues.Remove(downloadQueue); // 释放 空闲状态 isBusy = false; if (!canceled) { // post一个空事件,通知继续执行下一个任务 Post(new DownloadQueue()); } else { downloadQueues.Clear(); } canceled = false; LogUtils.i(bookId + "缓存完成,失败" + failureCount + "章"); }); }