【文件属性】:
文件名称: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