I have Observable
Observable<String> observable = Observable.create(new Observable.OnSubscribe<String>() {
@Override
public void call(Subscriber<? super String> subscriber) {
if (subscriber.isUnsubscribed()) {
return;
}
for (int i = 0; i < 100; i++) {
Thread.sleep(100);
subscriber.onNext("Loading:"+i);
}
subscriber.onCompleted();
}
});
Subscriber
Subscriber<? super String> sub = new Subscriber<String>() {
@Override
public void onCompleted() {
pDialog.setMessage("Successfully Done!");
pDialog.cancel();
}
@Override
public void onError(Throwable e) {
pDialog.cancel();
}
@Override
public void onNext(String string) {
pDialog.setMessage(string);
}
};
After click on button I do this:
compositeSubscription.add(observable.subscribeOn(Schedulers.newThread()).observeOn(
AndroidSchedulers.mainThread()).subscribe(sub));
In Activity:
@Override
protected void onStart() {
super.onStart();
compositeSubscription = new CompositeSubscription();
}
@Override
protected void onStop() {
if (!compositeSubscription.isUnsubscribed()&&compositeSubscription.hasSubscriptions())
compositeSubscription.unsubscribe();
super.onStop();
}
After clicking on Button, dialog is shown and message is updating.
BUT If I minimize the app and open it again Subscription is lost and message doesn't update, but process continue execute.
How to subscribe again to Observable without starting new process?