package com.guangzhou.haochuan.jxtv.viewModel; import com.guangzhou.haochuan.jxtv.model.CheckQuery; import com.guangzhou.haochuan.jxtv.web.retrofitFactory.CheckQueryFactory; import java.util.Observable; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.annotations.NonNull; import io.reactivex.disposables.CompositeDisposable; import io.reactivex.functions.Consumer; import io.reactivex.schedulers.Schedulers; /** * Created by yunhaipiaodi on 2017/9/22. */ public class CheckQueryViewModel extends Observable { private CompositeDisposable compositeDisposable = new CompositeDisposable(); private CheckQuery checkQuery; private String deviceId; public CheckQueryViewModel(String deviceId){ this.deviceId = deviceId; fetchCreateQueryData(); } private void fetchCreateQueryData() { compositeDisposable.add( new CheckQueryFactory().create() .getObservable(deviceId,deviceId,String.valueOf(System.currentTimeMillis())) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Consumer() { @Override public void accept(@NonNull CheckQuery source) throws Exception { setCheckQueryData(source); } }, new Consumer() { @Override public void accept(@NonNull Throwable throwable) throws Exception { throwable.printStackTrace(); } })); } public void setCheckQueryData(CheckQuery source){ this.checkQuery = source; setChanged(); notifyObservers(); } public CheckQuery getCheckQuery(){return this.checkQuery;} public void reset(){ unSubscribeFromObservable(); compositeDisposable = null; } private void unSubscribeFromObservable() { if (compositeDisposable != null && !compositeDisposable.isDisposed()) { compositeDisposable.dispose(); } } }