2017-08-09 1 views
0

Ich habe eine Frage zur Entsorgung auf RxJava. Ich habe den folgenden Satz im RxSwift-Dokument zu Github gefunden.Ist RxJava2 automatisch beobachtbar, wenn der Aufruf abgeschlossen ist oder ein Fehler aufgetreten ist?

Wenn eine Sequenz, die das completed oder error Ereignis sendet alle internen Ressourcen, die Sequenzelemente berechnen, werden freigegeben.

Um die Produktion von Sequenzelementen und freien Ressourcen sofort abzubrechen, rufen Sie dispose für das zurückgegebene Abonnement auf.

wenn ich mich richtig über die Ressourcen (Observablen) verstehen befreit werden, nachdem sie onCompleted oder onError nennen.

Die Frage ist also, macht RxJava das gleiche wie RxSwift oder ich muss die Entsorgung von mir selbst anrufen?

Vielen Dank

Antwort

4

Ja, alle zugehörigen Ressourcen werden automatisch entsorgt. Zur Veranschaulichung des Lauffolientests mit RxJava 2:

boolean isDisposed = false; 

@Test 
public void testDisposed(){ 
    TestObserver<Integer> to = Observable.<Integer>create(subscriber -> { 
     subscriber.setDisposable(new Disposable() { 

      @Override 
      public boolean isDisposed() { 
       return isDisposed; 
      } 

      @Override 
      public void dispose() { 
       isDisposed = true; 
      } 
     }); 
     subscriber.onComplete(); 
    }).test(); 

    to.assertComplete(); 
    assertTrue(isDisposed); 
} 
Verwandte Themen