package com.example.administrator.threaddownload;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.TextView;
import rx.Subscriber;
import rx.Subscription;
import rx.android.schedulers.AndroidSchedulers;
import rx.schedulers.Schedulers;
import zlc.season.rxdownload.DownloadStatus;
import zlc.season.rxdownload.RxDownload;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
/**
* 开始
*/
private Button mStart;
/**
* 暂停
*/
private Button mStop;
private ProgressBar mPb;
private TextView mTv;
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
DownloadStatus downloadStatus = (DownloadStatus) msg.obj;
long totalSize = downloadStatus.getTotalSize();
long downloadSize = downloadStatus.getDownloadSize();
String formatDownloadSize = downloadStatus.getFormatDownloadSize();
String formatStatusString = downloadStatus.getFormatStatusString();
if(downloadSize <= totalSize){
tv2.setText(formatStatusString);
mTv.setText("总大小:"+formatStatusString);
}
}
};
private Subscription subscription;
private TextView tv2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
/* final String url = "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&" +
"sec=1510320147544&di=088499e4e023382b4ed568eebbb2d9dd&imgtype=0&src=http%3A%2F%2Fimg2.a0bi" +
".com%2Fupload%2Fttq%2F20140811%2F1407710134236.jpg";*/
}
private void initView() {
tv2 = (TextView) findViewById(R.id.tv2);
mStart = (Button) findViewById(R.id.start);
mStart.setOnClickListener(this);
mStop = (Button) findViewById(R.id.stop);
mStop.setOnClickListener(this);
// mPb = (ProgressBar) findViewById(R.id.pb);
mTv = (TextView) findViewById(R.id.tv);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.start:
final String url = "http://gdown.baidu.com/data/wisegame/d2fbbc8e64990454/wangyiyunyinle_87.apk";
mStop.setEnabled(true);
mStart.setEnabled(false);
//设置最大线程
//设置下载失败重试次数
//.retrofit(myRetrofit)//若需要自己的retrofit客户端,可在这里指定
//.defaultSavePath(defaultSavePath)//设置默认的下载路径
subscription = RxDownload.getInstance()
.maxThread(2) //设置最大线程
.maxRetryCount(10) //设置下载失败重试次数
//.retrofit(myRetrofit)//若需要自己的retrofit客户端,可在这里指定
//.defaultSavePath(defaultSavePath)//设置默认的下载路径
.download(url, "android.apk", null)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Subscriber<DownloadStatus>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(final DownloadStatus status) {
Message message = new Message();
message.obj = status;
handler.sendMessageDelayed(message, 100);
/*if(progress == max){
Toast.makeText(MainActivity.this,"下载完成",Toast.LENGTH_SHORT).show();
}*/
}
});
break;
case R.id.stop:
mStart.setEnabled(true);
mStop.setEnabled(false);
//取消订阅, 即可暂停下载, 若服务端不支持断点续传,下一次下载会重新下载,反之会继续下载
if (subscription != null && !subscription.isUnsubscribed()) {
subscription.unsubscribe();
}
break;
}
}
}
compile 'zlc.season:rxdownload:1.1.0'依赖