一个城市对应一个数据记录和一个(离线)数据, 下载时一个下载记录

///------------------MainActivity------------------

MainActivity.showView
(1)检查城市CityID和CityName

(2)MainActivity.initView
MainActivity.checkAppUpdate (检查应用更新)
create UpdateRequestAdapter http://dl.imap.baidu.com/s/UpdateInfo.php?sv=&qt=&key=
UpdateRequestAdapter.addCallBackListener mUpdatecallback
startHttpTask

mUpdatecallback.onCallBack
      (1)MainActivity.mHandle.sendEmptyMessage UPDATE_INFO
      (2)MainActivity.mHandle.sendEmptyMessage START_CHECK_UNFINISH

MainActivity.mHandle.handleMessage START_CHECK_UNFINISH
MainActivity.startCheckUnfinshTask

MainActivity.CheckUnfinshTask.doInBackground (检查中断的下载)
      取数据库DownloadRecord个数

MainActivity.CheckUnfinshTask.onPostExecute
(1) MainActivity.CheckUnfinshTask.showUnfinshDialog (有下载记录)
      (1)AlertDialog.onClick BUTTON_POSITIVE
            startService UpdateService FLAG_CHECK_ALL_UNFINSH_DOWNLOAD
            MainActivity.startCheckDataUpdate
      (2)AlertDialog.onClick BUTTON_NEGATIVE
            MainActivity.startClearDownloadRecordTask
(2)MainActivity.startCheckDataUpdate
MainActivity.startCheckDataUpdate

MainActivity.DataUpdateInfoTask.doInBackground  (检查更新)
      DataUpdateInfoAction.queryDataUpdateInfo http://bs.baidu.com/offlinebusdata/download/131/meta.txt
      DataUpdateInfo.versionCode <= DataRecord.version
            return FLAG_DONOT_UPDATE
      DataUpdateInfo.versionCode <= DownloadRecord.version
            return FLAG_DONOT_UPDATE
      删除中断DownloadRecord(或null) 
      startService UpdateService FLAG_CANCLE_SINGLE_DOWNLOAD  (取消下载)
      new DownloadRecord (创建DownloadRecord),用DataUpdateInfo初始化
      return FLAG_UPDATE_NODATA/FLAG_UPDATE_HASDATA

MainActivity.DataUpdateInfoTask.onPostExecute
      (1)FLAG_UPDATE_HASDATA (更新)
            showDataUpdateDialog(true);
      (2)FLAG_UPDATE_NODATA (新下)
            showDataUpdateDialog(false);
      (3)FLAG_DONOT_UPDATE (不需要更新/中断版本最新)
            return;
MainActivity.DataUpdateInfoTask.showDataUpdateDialog
AlertDialog.onClick BUTTON_POSITIVE
MainActivity.startCreateDownloadRecordTask

MainActivity.CreateDownloadRecordTask.doInBackground
      DownloadRecord插入数据库
      startService UpdateService FLAG_CHECK_SINGLE_UPDATE_DOWNLOAD
------------------MainActivity------------------///
///------------------MoreActivity------------------
MoreActivity.onClick mCheckOfflineLayout
MoreActivity.startCheckDataUpdate

MoreActivity.DataUpdateInfoTask.doInBackground
      DataUpdateInfoAction.queryDataUpdateInfo
            return FLAG_NO_DATA (没有DataUpdateInfo)
      DataUpdateInfo.versionCode <= DataRecord.version
            return FLAG_DONOT_UPDATE
      DataUpdateInfo.versionCode <= DownloadRecord.version(中断的)
            return FLAG_UPDATE_NODATA/FLAG_UPDATE_HASDATA (用中断DownloadRecord)
      删除中断DownloadRecord(或null)
      startService UpdateService FLAG_CANCLE_SINGLE_DOWNLOAD (停止下载)
      new DownloadRecord
      return FLAG_UPDATE_NODATA/FLAG_UPDATE_HASDATA

MoreActivity.DataUpdateInfoTask.onPostExecute
      (1)FLAG_NO_DATA 
            return;
      (2)FALG_DONOT_UPDATE
            return;
      (3)FLAG_UPDATE_NODATA/FLAG_UPDATE_HASDATA
            MoreActivity.DataUpdateInfoTask.showDataUpdateDialog
            AlertDialog.onClick BUTTON_POSITIVE
            MoreActivity.startCreateDownloadRecordTask

MoreActivity.CreateDownloadRecordTask.doInBackground
      DownloadRecord更新数据库(删旧插新)
      startService UpdateService FLAG_CHECK_SINGLE_UPDATE_DOWNLOAD
------------------MoreActivity------------------///
///------------------UpdateService------------------
UpdateService.onStartCommand FLAG_CHECK_SINGLE_UPDATE_DOWNLOAD 【1】
UpdateService.startDownload
      new DownloadFutureTask(DownLoadRunnable)
ThreadPool.execute DownloadFutureTask
      ThreadPool.execute DownloadFutureTask

DownLoadRunnable.run
      SD卡 
      SD卡剩余空间 
      若已有数据文件,则比较MD5:DownloadRecord.MD5与/mnt/sdcard/BaiduBus/131/1354124148114.bdp
            DownLoadRunnable.showDownloadSucc
      HttpClient.execute HttpGet http://bs.baidu.com/offlinebusdata/download/131/131.1354123803701 (请求离线数据)
      UpdateService.saveFile /mnt/sdcard/BaiduBus/131/1354124148114.bdp
            DownLoadRunnable.showDownLoadPercent (保存进度)
      (1)DownLoadRunnable.showDownloadSucc
            UpdateDB(DownloadRecord)
                  删除(数据库原有)DataRecord 
                  new DataRecord (创建DataRecord,插入数据库)
                  delete DownloadRecord (删除数据库DownloadRecord)
      (2)DownLoadRunnable.showDownloadFail

UpdateService.onStartCommand FLAG_CHECK_ALL_UNFINSH_DOWNLOAD 【2】
UpdateService.startCheckAllUnfinshed
new CheckAllUnFinishRunnable
ThreadPool.execute CheckAllUnFinishRunnable

UpdateService.CheckAllUnFinishRunnable.run
      遍历List<DownloadRecord> 
              UpdateService.startDownload

UpdateService.onStartCommand FLAG_CANCLE_SINGLE_DOWNLOAD【3】
UpdateService.stopDownLoad
      DownloadFutureTask.cancel
      Map.remove

UpdateService.onStartCommand FLAG_CANCLE_ALL_DOWNLOAD 【4】
UpdateService.stopAllDownLoad
DownloadFutureTask.cancel (遍历)
Map.clear
ThreadPool.shutDown
------------------UpdateService------------------///

bdbus_lxb下载相关推荐

  1. iphone开发笔记和技巧总结

    在iphone程序中实现截屏的一种方法: //导入头文件   #importQuartzCore/QuartzCore.h //将整个self.view大小的图层形式创建一张图片imageUIGrap ...

  2. Alibaba Cloud Linux 2.1903 LTS 64位服务器yum源下载404,Alibaba Cloud Linux 2实例中使用docker-ce、epel等YUM源安装软件失败

    [Alibaba Cloud Linux 2.1903 LTS 64位]服务器yum源下载404 failure: repodata/repomd.xml from docker-ce-stable: ...

  3. Redis学习之路(一)--下载安装redis

    redis学习之路--下载安装redis windows安装redis 1.下载redis 2.安装 3.查看是否安装成功 windows安装redis 1.下载redis 网址:https://gi ...

  4. 各bert 模型下载

    20210618 https://huggingface.co/bert-base-chinese/tree/main bert 官方 https://mirrors.tuna.tsinghua.ed ...

  5. github下载源码也用命令进行安装包的联系

    2.下载安装 git clone https://github.com/Parsely/pykafka.git 然后将下载下来的pykafka文件夹下的pykafka文件(pykafka的库文件)放到 ...

  6. 用python下载文件的若干种方法汇总

    压缩文件可以直接放到下载器里面下载的 you-get 连接 下载任意文件 重点 用python下载文件的若干种方法汇总 写文章 用python下载文件的若干种方法汇总 zhangqibot发表于Met ...

  7. github下载慢,轻松提速教程

    20210818 idm 可以快速下载github 获取github的IP地址 访问:https://www.ipaddress.com/ 网址 依次获取以下三个网址的IP github.com gi ...

  8. Springboot前后端分离上传、下载压缩包、查看文件

    Controller层: /*** 保存附件按钮* @param file 附件* @return 附件路径**/@PostMapping(value = "/upload")Ob ...

  9. LeetCode简单题之下载插件

    题目 小扣打算给自己的 VS code 安装使用插件,初始状态下带宽每分钟可以完成 1 个插件的下载.假定每分钟选择以下两种策略之一: 使用当前带宽下载插件 将带宽加倍(下载插件数量随之加倍) 请返回 ...

最新文章

  1. python语言中的多行注释符是_有没有一种方法可以在Python中创建多行注释? - python...
  2. oracle 表分区[三]
  3. Java设计模式(十六):生成器设计模式
  4. 哪个线程执行CompletableFuture的任务和回调?
  5. OpenHarmony移植案例:如何适配服务启动引导部件bootstrap_lite
  6. pcl库python_成功安装 linux pcl (1.8.1版本) python-pcl
  7. .net 遍历数组找重复值写入一个新数组_第二轮 Python 刷题笔记一:数组
  8. 【IBM Tivoli Identity Manager 学习文档】2 部署准备知识
  9. 万年历,java如何实现日历查询
  10. AIR小应用--北京机动车限行提示
  11. Android 微信登陆
  12. 学习笔记 | 假设检验概念、小概率事件、P-Value与显著性水平、假设检验步骤
  13. 从零读懂CAN总线(上)
  14. JAVA学习笔记——对象(一)
  15. 2021年CKA考试真题(一)CKA考试介绍
  16. (Python)从零开始,简单快速学机器仿人视觉Opencv---运用二:物体检测
  17. h264编码算法流程
  18. 最新某宝x-sign参数生成原理
  19. 计算机报名照片没有重命名,照片重命名怎么弄
  20. 计算机用户密码最长使用期限,密码最短使用期限

热门文章

  1. 添加gitlab远程账号 使用注意事项
  2. 在URL里传入数组到HTML 里。
  3. Python初识与简介【开篇】
  4. jwPlayer实现支持IE8及以下版本避免出错的方法
  5. 目标检测与转自背景减除
  6. android 多种特效TextView
  7. step4 . day5 进程与进程的创建
  8. Python笔记 【无序】 【一】
  9. 201671010406 丁家辉《英文文本统计分析》结对项目报告
  10. nginx+ssl+pm2 部署 nodejs 服务