例:
1.导入依赖包
dependencies { //retrofit, 基于Okhttp,考虑到项目中经常会用到retrofit,就导入这个了。 compile 'com.squareup.retrofit2:retrofit:2.1.0' //rxjava 本例中线程切换要用到,代替handler compile 'io.reactivex:rxjava:1.1.6' compile 'io.reactivex:rxandroid:1.2.1' }
清单文件中添加网络权限和文件访问权限
<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
MainActivity
package com.example.day_0716_ddxc; import android.os.Bundle; import android.os.Environment; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Button; import android.widget.ProgressBar; import android.widget.Toast; import java.io.File; import rx.Observable; import rx.android.schedulers.AndroidSchedulers; import rx.functions.Action0; /** * 断点续传 * 1.添加依赖 * 2.生成带进度监听的ProgressResponseBody * 3.创建ProgressDownloader * 4.清单文件中添加网络权限和文件访问权限 */ public class MainActivity extends AppCompatActivity implements ProgressResponseBody.ProgressListener,View.OnClickListener{ public static final String TAG = "MainActivity"; public static final String PACKAGE_URL = "http://gdown.baidu.com/data/wisegame/df65a597122796a4/weixin_821.apk"; // @Bind(R.id.progressBar) ProgressBar progressBar; private long breakPoints; private ProgressDownloader downloader; private File file; private long totalBytes; private long contentLength; private Button downloadButton,cancel_button,continue_button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); progressBar = findViewById(R.id.progressBar); downloadButton = findViewById(R.id.downloadButton); cancel_button = findViewById(R.id.cancel_button); continue_button = findViewById(R.id.continue_button); downloadButton.setOnClickListener((View.OnClickListener) this); cancel_button.setOnClickListener((View.OnClickListener) this); continue_button.setOnClickListener((View.OnClickListener) this); } @Override public void onClick(View view) { switch (view.getId()) { case R.id.downloadButton: // 新下载前清空断点信息 breakPoints = 0L; file = new File(En