一个城市对应一个数据记录和一个(离线)数据, 下载时一个下载记录
///------------------MainActivity------------------
MainActivity.showView
(1)检查城市CityID和CityName
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------------------///