2016-08-08 3 views
0

내 코드에서 관찰 대상을 만들고 구독 개체에 대한 참조를 유지합니다. 앱을 시작하면 1부터 1000000까지의 모든 숫자가 인쇄됩니다. 활동을 최소화하면 에 구독을 취소합니다. 그러나 LogCat은 인쇄 번호를 계속 유지합니다. 그렇게하지 못하게하려면 어떻게해야합니까?RxJava 관찰 가능 항목을 방출하지 못하게하는 방법. 구독을 시도했지만 계속되었습니다

public class MainActivity extends AppCompatActivity { 

    private Subscription printingNumbers; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     printingNumbers = Observable 
          .range(1, 500000) 
          .map(i -> i*2) 
          .subscribe(i -> System.out.println(i)); 
    } 

    @Override 
    protected void onPause() { 
     super.onPause(); 
     printingNumbers.unsubscribe(); 
    } 

} 
+0

로 확실하지 그 범위는 한 곳에서 모든 값을 반환 생각하고 시간이 걸립니다 로그에 일명 표시 할 수 있습니다. 수신 거부가 작동하지만 인쇄 할 값이 많이 있습니다. .interval로 시도해 볼 수 있습니까? – X3Btel

+0

그래, 해냈어. 그래서 내 ubsubcription 작동합니다. 그러나 .range와 같은 효과를 어떻게 얻을 수 있습니까? 그러나 모든 값을 한 번에 가져 오지는 않습니까? BTW 대답으로 게시하면 받아 들일 것입니다 –

+1

onCreate의 범위를 동 기적으로 소비하므로 일시 중지 및 가입 취소가 발생하지 않습니다. – akarnokd

답변

1

Range는 모든 값을 한 번에 반환하지만 시각화하려면 Log에서 시간이 걸립니다. Interval은 주어진 시간에 값을 반환하므로 구독 취소를 테스트 할 수 있습니다.

PS : 나는 당신이 emiits에 범위와 간격을 결합 할 수 있다고 생각 주어진 간격으로 한계까지 가치를하지만, 메신저 단지 학습 RX

관련 문제