Chcę upewnić się, że nie powoduję żadnych wycieków pamięci podczas używania RxJava. Proszę dać mi znać, jeśli to właściwe sposoby obsługi każdy przypadek ...RxJava - Kiedy powinienem zajmować się rezygnacją z subskrypcji?
Przypadek 1
jeśli tworzę Observable
i Subscription
w tym samym zakresie, GC będzie dbać o pozbywając się ich? Czy muszę zadzwonić pod numer unsubscribe()
?
public static void createObservableAndSubscribe() {
Observable<Integer> source = Observable.just(1,6,3,2,562,4,6);
Subscription sub = source.subscribe(i -> System.out.println(i));
sub.unsubscribe(); //unnecessary I assume? GC should take care of it?
}
CASE 2
Ale co nieskończona obserwowalne i tymczasowy abonenta? Załóżmy, że mam GUI, który subskrybuje nieskończoną Observable
. Ale kiedy GUI zostanie zniszczony, czy muszę jawnie zrezygnować z subskrypcji Subscriber
?
public void attachSubscriber(Observable<Integer> infiniteObservable) {
Subscription sub = infiniteObservable.subscribe(i -> countLabel.setText(i.toString());
//do stuff, have this subscription persist for the life of a GUI
sub.unsubscribe(); //must I do this when the GUI is destroyed?
}