android 多线程多任务断点下载

时间:2014-07-13 09:34:33
【文件属性】:

文件名称:android 多线程多任务断点下载

文件大小:78KB

文件格式:RAR

更新时间:2014-07-13 09:34:33

断点下载

public class DownloadActivity extends Activity { private ProgressBar downloadbar; private EditText pathText; private TextView resultView; private Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { switch (msg.what) { case 1: int size = msg.getData().getInt("size"); downloadbar.setProgress(size); float result = (float)downloadbar.getProgress()/ (float)downloadbar.getMax(); int p = (int)(result*100); resultView.setText(p+"%"); if(downloadbar.getProgress()==downloadbar.getMax()) Toast.makeText(DownloadActivity.this, R.string.success, 1).show();//下载完成提示 break; case -1: Toast.makeText(DownloadActivity.this, R.string.error, 1).show(); //下载失败提示 break; } } }; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button button = (Button)this.findViewById(R.id.button); downloadbar = (ProgressBar)this.findViewById(R.id.downloadbar); pathText = (EditText)this.findViewById(R.id.path); resultView = (TextView)this.findViewById(R.id.result); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String path = pathText.getText().toString(); if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){ File dir = Environment.getExternalStorageDirectory();//文件保存目录 System.out.println("文件保存目录=="+dir); download(path, dir); }else{ Toast.makeText(DownloadActivity.this, R.string.sdcarderror, 1).show();//存贮路径不存在,则淡出提示 } } }); } //对于UI控件的更新只能由主线程(UI线程)负责,如果在非UI线程更新UI控件,更新的结果不会反映在屏幕上,某些控件还会出错 private void download(final String path, final File dir){ new Thread(new Runnable() { @Override public void run() { try { FileDownloader loader = new FileDownloader(DownloadActivity.this, path, dir, 3); int length = loader.getFileSize();//获取文件的长度 downloadbar.setMax(length); loader.download(new DownloadProgressListener(){ @Override public void onDownloadSize(int size) {//可以实时得到文件下载的长度 Message msg = new Message(); msg.what = 1; msg.getData().putInt("size", size); handler.sendMessage(msg); }}); } catch (Exception e) { Message msg = new Message(); msg.what = -1; msg.getData().putString("error", "文件下载失败"); handler.sendMessage(msg); } } }).start(); }


【文件预览】:
MulThreadDownload
----.project(853B)
----default.properties(364B)
----bin()
--------cn()
--------MulThreadDownload.apk(21KB)
--------resources.ap_(11KB)
--------classes.dex(17KB)
----.settings()
--------org.eclipse.core.resources.prefs(86B)
----AndroidManifest.xml(1KB)
----src()
--------cn()
----100多本计算机经典书籍推荐.txt(3KB)
----res()
--------values()
--------layout()
--------drawable-ldpi()
--------drawable-hdpi()
--------drawable-mdpi()
----.classpath(280B)
----gen()
--------cn()
----bbs.theithome.com专业的android源码下载站.txt(1KB)
----assets()

网友评论

  • 很完整的参考,值得学习
  • 代码不够全,缺少功能
  • 代码不完整,不过可以参考一下
  • 完全可以参考,借鉴
  • 一般般!!感觉没有参考的价值!!
  • 代码不够全,缺少功能
  • 真用不了,少了一段
  • 有点粗糙了,不过有参考价值
  • 怎么没有暂停恢复等操作呢
  • 试了一天,感觉不是我要的那种效果,并且这个工程貌似不完整1