package zlc.season.rxdownloadproject.activity; import android.databinding.DataBindingUtil; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Toast; import io.reactivex.disposables.Disposable; import io.reactivex.functions.Consumer; import zlc.season.rxdownload2.RxDownload; import zlc.season.rxdownload2.entity.DownloadEvent; import zlc.season.rxdownload2.entity.DownloadFlag; import zlc.season.rxdownload2.entity.DownloadStatus; import zlc.season.rxdownloadproject.Constants; import zlc.season.rxdownloadproject.R; import zlc.season.rxdownloadproject.databinding.ActivityMultiMissionDownloadBinding; import zlc.season.rxdownloadproject.model.MutiModel; import static zlc.season.rxdownload2.function.Utils.dispose; import static zlc.season.rxdownload2.function.Utils.log; public class MultiMissionDownloadActivity extends AppCompatActivity { private static final String missionId = "testMissionId"; // private String url1 = Constants.URL1; private String url2 = Constants.URL2; private String url3 = Constants.URL3; private RxDownload rxDownload; private Disposable disposable1, disposable2, disposable3; private MutiModel mutiModel = null; private ActivityMultiMissionDownloadBinding binding = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // initData mutiModel = new MutiModel(); // initView binding = DataBindingUtil.setContentView(this, R.layout.activity_multi_mission_download); binding.setItem(mutiModel); binding.contentMultiMissionDownload.setPresenter(new Presenter()); setSupportActionBar(binding.toolbar); // rxDownload = RxDownload.getInstance(this); } @Override protected void onResume() { super.onResume(); // startMultiMission(); // disposable1 = rxDownload.receiveDownloadStatus(url1) .subscribe(new Consumer<DownloadEvent>() { @Override public void accept(DownloadEvent downloadEvent) throws Exception { int flag = downloadEvent.getFlag(); switch (flag) { case DownloadFlag.NORMAL: binding.contentMultiMissionDownload.control1.setVisibility(View.GONE); break; case DownloadFlag.WAITING: binding.contentMultiMissionDownload.control1.setVisibility(View.VISIBLE); binding.contentMultiMissionDownload.control1.setText("等待中"); break; case DownloadFlag.STARTED: binding.contentMultiMissionDownload.control1.setText("下载中"); break; case DownloadFlag.PAUSED: binding.contentMultiMissionDownload.control1.setText("已暂停"); break; case DownloadFlag.COMPLETED: binding.contentMultiMissionDownload.control1.setText("已完成"); break; case DownloadFlag.FAILED: Throwable throwable = downloadEvent.getError(); log(throwable); binding.contentMultiMissionDownload.control1.setText("失败"); break; } DownloadStatus status = downloadEvent.getDownloadStatus(); binding.contentMultiMissionDownload.progress1.setProgress(status.getPercentNumber()); } }); // disposable2 = rxDownload.receiveDownloadStatus(url2) .subscribe(new Consumer<DownloadEvent>() { @Override public void accept(DownloadEvent downloadEvent) throws Exception { int flag = downloadEvent.getFlag(); switch (flag) { case DownloadFlag.NORMAL: binding.contentMultiMissionDownload.control2.setVisibility(View.GONE); break; case DownloadFlag.WAITING: binding.contentMultiMissionDownload.control2.setVisibility(View.VISIBLE); binding.contentMultiMissionDownload.control2.setText("等待中"); break; case DownloadFlag.STARTED: binding.contentMultiMissionDownload.control2.setText("下载中"); break; case DownloadFlag.PAUSED: binding.contentMultiMissionDownload.control2.setText("已暂停"); break; case DownloadFlag.COMPLETED: binding.contentMultiMissionDownload.control2.setText("已完成"); break; case DownloadFlag.FAILED: Throwable throwable = downloadEvent.getError(); log(throwable); binding.contentMultiMissionDownload.control2.setText("失败"); break; } DownloadStatus status = downloadEvent.getDownloadStatus(); binding.contentMultiMissionDownload.progress2.setProgress(status.getPercentNumber()); } }); // disposable3 = rxDownload.receiveDownloadStatus(url3) .subscribe(new Consumer<DownloadEvent>() { @Override public void accept(DownloadEvent downloadEvent) throws Exception { int flag = downloadEvent.getFlag(); switch (flag) { case DownloadFlag.NORMAL: binding.contentMultiMissionDownload.control3.setVisibility(View.GONE); break; case DownloadFlag.WAITING: binding.contentMultiMissionDownload.control3.setVisibility(View.VISIBLE); binding.contentMultiMissionDownload.control3.setText("等待中"); break; case DownloadFlag.STARTED: binding.contentMultiMissionDownload.control3.setText("下载中"); break; case DownloadFlag.PAUSED: binding.contentMultiMissionDownload.control3.setText("已暂停"); break; case DownloadFlag.COMPLETED: binding.contentMultiMissionDownload.control3.setText("已完成"); break; case DownloadFlag.FAILED: Throwable throwable = downloadEvent.getError(); log(throwable); binding.contentMultiMissionDownload.control3.setText("失败"); break; } DownloadStatus status = downloadEvent.getDownloadStatus(); binding.contentMultiMissionDownload.progress3.setProgress(status.getPercentNumber()); } }); } @Override protected void onPause() { super.onPause(); dispose(disposable1); dispose(disposable2); dispose(disposable3); } private void startMultiMission() { rxDownload.serviceMultiDownload(missionId, url1, url2, url3) .subscribe(new Consumer<Object>() { @Override public void accept(Object o) throws Exception { Toast.makeText(MultiMissionDownloadActivity.this, "开始", Toast.LENGTH_SHORT).show(); } }, new Consumer<Throwable>() { @Override public void accept(Throwable throwable) throws Exception { log(throwable); } }); } public class Presenter { public void onClick(View view) { switch (view.getId()) { case R.id.start: rxDownload.startAll(missionId) .subscribe(new Consumer<Object>() { @Override public void accept(Object o) throws Exception { Toast.makeText(MultiMissionDownloadActivity.this, "全部开始", Toast .LENGTH_SHORT).show(); } }, new Consumer<Throwable>() { @Override public void accept(Throwable throwable) throws Exception { log(throwable); } }); break; case R.id.pause: rxDownload.pauseAll(missionId) .subscribe(new Consumer<Object>() { @Override public void accept(Object o) throws Exception { Toast.makeText(MultiMissionDownloadActivity.this, "全部暂停", Toast .LENGTH_SHORT).show(); } }, new Consumer<Throwable>() { @Override public void accept(Throwable throwable) throws Exception { log(throwable); } }); break; case R.id.delete: rxDownload.deleteAll(missionId, true) .subscribe(new Consumer<Object>() { @Override public void accept(Object o) throws Exception { Toast.makeText(MultiMissionDownloadActivity.this, "删除成功", Toast .LENGTH_SHORT).show(); } }, new Consumer<Throwable>() { @Override public void accept(Throwable throwable) throws Exception { log(throwable); } }); } } } }