public class DownLoadActivity extends Activity {
private Handler handler;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_download);
final ProgressBar progressBar = (ProgressBar) findViewById(R.id.progressBar);
//主线程 点击按钮 发起下载 开启子线程做下载 下载过程中通知主线程 主线程更新进度条
findViewById(R.id.button2).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new Thread(new Runnable() {
@Override
public void run() {
try {
download("http://download.sj.qq.com/upload/connAssitantDownload/upload/MobileAssistant_1.apk");
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
}
});
handler = new Handler(){
@Override
public void handleMessage(@NonNull Message msg) {
super.handleMessage(msg);
switch (msg.what){
case 100001 :
progressBar.setProgress((Integer) msg.obj);
break;
}
}
};
}
private void download(String appUrl) throws IOException {
URL url = new URL(appUrl);
URLConnection urlConnection = url.openConnection();
InputStream inputStream = urlConnection.getInputStream();
//获取文件的总长度
//
int contentLength = urlConnection.getContentLength();
String downloadFolderName = Environment.getExternalStorageDirectory() + File.separator + "imooc" + File.separator;
File file = new File(downloadFolderName);
if(!file.exists()){
file.mkdir();
}
String fileName = downloadFolderName + "imooc.apk";
File apkFile = new File(fileName);
if(apkFile.exists()){
apkFile.delete();
}
int downloadSize = 0;
byte[] bytes = new byte[1024];
int length = 0;
OutputStream outputStream = new FileOutputStream(fileName);
while((length = inputStream.read(bytes)) != -1){
outputStream.write(bytes, 0 , length);
downloadSize += length;
Message message = Message.obtain();
message.obj = downloadSize * 100 / contentLength;
message.what = 100001;
handler.sendMessage(message);
}
inputStream.close();
outputStream.close();
}
}
Handler 实现下载文件并更新进度条
最新推荐文章于 2021-05-31 06:15:50 发布