-
网络下载的关键点查看全部
-
主线程更新UI 1.主线程通过接收广播来更新UI (如图) 注册广播接收者 IntentFilter filter = new IntentFilter(); filter.addAction(DownloadService.ACTION_UPDATE); registerReceiver(mReceiver, filter); 2.在这里启动DownloadTask public void handleMessage(Message msg) { switch (msg.what){ case MSG_INIT: FileInfo fileInfo = (FileInfo) msg.obj; //启动下载任务 mTask = new DownloadTask(DownloadService.this, fileInfo); mTask.downloadFile(); break; } } 3.在DownloadTask中开启线程执行下载任务 public class DownloadTask { public void downloadFile(){ //读取上次下载的信息 List<ThreadInfo> threadInfos = mDao.getThread(mFileInfo.getUrl()); ThreadInfo threadInfo = null; if(threadInfos.size() == 0){ //还没开始下载,创建一个新线程信息 threadInfo = new ThreadInfo(0, mFileInfo.getUrl(), 0, mFileInfo.getLength(), 0); }else { threadInfo = threadInfos.get(0); } //创建子线程并开始下载 new DownloadThread(threadInfo).start(); }查看全部
-
完成下载任务 1.上一笔记已经完成了下载线程的具体实现,小结: (1)这个例子是单线程的,所以数据库中只有finished元素是有用的,其他的元素初始化以后一直都不会变。 即start=0,end=文件长度,url=文件地址 (2)第一次开始下载,start=finished=0,只有下载开始了才会mFinished += len来更新mFinished,然后会更新到数据库中 mDao.updateThread(mThreadInfo.getUrl(), mThreadInfo.getId(), mFinished); (3)接下来再点下载,start将会更新 start = mThreadInfo.getStart()+mThreadInfo.getFinished();//getStart()=0 mFinished也会被更新 mFinished += mThreadInfo.getFinished(); (4)最后一点比较重要!mFinished初始值=0,即使第二次以后点击开始按钮,进来mFinished还是0,更新时是从数据库中直接读取的。 2.在下载任务类中开始这个线程 3.在DownloadService中获得文件长度之后就启动下载任务 4.当点击停止按钮时,就把mTask.isPause置为true if (ACTION_STOP == intent.getAction()){ FileInfo fileInfo = (FileInfo) intent.getSerializableExtra("fileInfo"); Log.i(LOG_TAG, "Stop: "+fileInfo.toString()); if (mTask != null){ mTask.isPause = true; } 这样后台运行的DownloadService就会停止 if (isPause){ mDao.updateThread(…, …, mFinished); return; }查看全部
-
onDestory广播接收器查看全部
-
广播接收器更新进度条查看全部
-
项目总体逻辑查看全部
-
干净利落查看全部
-
多线程下载怎么实现呢,就像慕课网的课程下载怎么实现的,有Demo吗查看全部
-
RandomAccessFile是 可以在文件任意位置进行写入操作的文件格式 if(conn.getResponseCode()==HttpURLConnection.HTTP_OK){ //获得文件长度 length=conn.getContentLength(); }查看全部
-
案例分析查看全部
-
案例结构查看全部
-
学习内容查看全部
-
设置下载位置 设置文件写入位置查看全部
-
。。。查看全部
-
用seek()方法设置读写位置查看全部
举报
0/150
提交
取消