在項目中遇到這樣的一種情況 想要讓某些任務(wù)順序執(zhí)行 但是如果用多線程的話是無法保證順序的
所以這里我就采用單線程的方式去處理
第一種方式 Rxjava 結(jié)合 Executors去先單線程執(zhí)行
ExecutorService es = Executors.newFixedThreadPool(1);
final CompositeDisposable disposable = new CompositeDisposable();
Observable.create(new ObservableOnSubscribe<Object>() {
@Override
public void subscribe(ObservableEmitter<Object> e) throws Exception {
}
})
.subscribeOn(Schedulers.from(ThreadUtils.getInstance().getEs()))
.subscribe(new Observer<Object>() {
@Override
public void onSubscribe(Disposable d) {
disposable.add(d);
}
@Override
public void onNext(Object value) {
//// TODO: 2017/12/7 doSomething
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
});
如果不想要上次處理的結(jié)果了 可以clear即可
disposable.clear();
使用Executors其實可以不用rxjava的 只是使用rxjava可以進(jìn)行一些更方便的處理
ExecutorService es = Executors.newFixedThreadPool(1);
如果當(dāng)前這一條線程在忙 其他的任務(wù)就會自行等待 不用做處理
第二種使用intentService
使用intent service 這就不用說了 內(nèi)部使用handler的方式封裝處理 一次只會處理一件事
第三種方式 使用stack
這是jdk自帶的 自己處理進(jìn)棧出棧 就是可能會麻煩點(diǎn)