コード例 #1
0
        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");
        }
コード例 #2
0
        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 + "章");
            });
        }