如何阻止RxJava observable发出项目。试图取消订阅,但它一直在继续

时间:2016-08-08 12:23:16

标签: android rx-java

在我的代码中,我创建了一个observable并保留对订阅对象的引用。 当我启动应用程序时,它会打印从1到1000000的所有数字 如果我最小化活动,我会在onPause中订阅订阅 但是,LogCat会保留打印数字。我如何阻止它这样做?

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();
    }

}

1 个答案:

答案 0 :(得分:1)

Range会立即返回所有值,但需要时间在Log上以使其可视化。 Interval将在给定时间返回值,这样您就可以测试取消订阅。

PS:我认为你可以将范围和间隔组合到emiits值到给定间隔的限制,但不确定,因为我只是学习RX