https://github.com/wyouflf/xUtils
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity" > <EditText android:id="@+id/tv_path" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="http://down.360safe.com/inst.exe" /> <Button android:layout_marginTop="10dip" android:layout_width="match_parent" android:onClick="download" android:layout_height="wrap_content" android:text="下载" /> <TextView android:id="@+id/tv_info" android:layout_width="match_parent" android:layout_marginTop="10dip" android:layout_height="wrap_content" android:text="提示信息" /> </LinearLayout>
package com.wzw.downloaddemo; import java.io.File; import com.lidroid.xutils.HttpUtils; import com.lidroid.xutils.exception.HttpException; import com.lidroid.xutils.http.HttpHandler; import com.lidroid.xutils.http.ResponseInfo; import com.lidroid.xutils.http.callback.RequestCallBack; import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.view.View; import android.widget.EditText; import android.widget.TextView; public class MainActivity extends Activity { private EditText etPath; private TextView tvInfo; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); etPath=(EditText) findViewById(R.id.tv_path); tvInfo=(TextView) findViewById(R.id.tv_info); } public void download(View v){ String path =etPath.getText().toString(); HttpUtils http = new HttpUtils(); http.download(path, "/sdcard/360.exe", true, true, new RequestCallBack<File>() { <span style="white-space:pre"> </span>@Override public void onStart() { tvInfo.setText("正在连接..."); } @Override public void onLoading(long total, long current, boolean isUploading) { tvInfo.setText(current + "/" + total); } @Override public void onFailure(HttpException error, String msg) { tvInfo.setText(msg); } @Override public void onSuccess(ResponseInfo<File> responseInfo) { // TODO Auto-generated method stub tvInfo.setText("downloaded:" + responseInfo.result.getPath()); } }); } }
用Utils的话比用传统的方式要方便的多。
Android使用开源项目Xutils实现多线程下载文件,布布扣,bubuko.com
原文地址:http://blog.csdn.net/ibey0nd/article/details/38261689