I have custom set of objects that's I want to emit after every 2 seconds.That means when I add set Of Items to ReplaySubject<> it should get access to those object one by one onNext() method every 2 seconds. This objects are added to ReplaySubject<> dynamically on user events. That's why I'm using ReplaySubject<>.
I have achieve that but I want to pause and resume this thread base on some condition which is going to be change base on a user interaction. How to achieve this.
Here's my code.
private ReplaySubject<CartItemToBeRemove> cartItemToBeRemoveSubject;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_cart);
ButterKnife.bind(this);
cartItemToBeRemoveSubject = ReplaySubject.create();
initDeleteQueue();
}
public void initDeleteQueue() {
cartItemToBeRemoveSubject
.delay(2,TimeUnit.SECONDS)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribeWith(new Observer<CartItemToBeRemove>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(CartItemToBeRemove itemToBeRemove) {
cartData.remove(itemToBeRemove.getItem());
cartListAdapter.notifyItemRemoved(itemToBeRemove.getPosition());
Log.d(TAG, "item" + deletedItem.getName());
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
});
}
I'm adding objects to ReplaySubject like below
cartItemToBeRemoveSubject.onNext(toBeRemove);
zipping your subject with anObservable.interval. - cwbowron