There are two events - event1
and event2
which can call getA()
, these two events could occur simultaneously and trigger getA
. I don't want to call getA
multiple times until it gets done. I am using isDisposed()
to check if its still active and calling dispose()
explicitly in doFinally
and setting fetchADisposable as null . Is there a better way to do this ?
Disposable fetchADisposable;
public void getA() {
fetchA() //returns Observable
.doFinally(new Action() {
fetchADisposable.dispose();
fetchADisposable = null;
}).subscribe() {
@Override
public void onSubscribe (Disposable d){
fetchADisposable = d;
}
@Override
public void onNext () {
}
@Override
public void onError (Throwable e){
}
@Override
public void onComplete () {
}
}
}
public void event1() {
if (fetchADisposable == null || fetchADisposable.isDisposed()) {
getA();
}
}
public void event2() {
if (fetchADisposable == null || fetchADisposable.isDisposed()) {
getA();
}
}