How to stop and resume Observable.interval emiting ticks

后端 未结 7 2046
野性不改
野性不改 2020-12-13 06:32

This will emit a tick every 5 seconds.

Observable.interval(5, TimeUnit.SECONDS, Schedulers.io())
            .subscribe(tick -> Log.d(TAG, "tick = &qu         


        
7条回答
  •  暗喜
    暗喜 (楼主)
    2020-12-13 07:13

    @AndroidEx , that's a wonderful answer. I did it a bit differently:

    private fun disposeTask() {
        if (disposeable != null && !disposeable.isDisposed)
          disposeable.dispose()
      }
    
     private fun runTask() {
        disposeable = Observable.interval(0, 30, TimeUnit.SECONDS)
    .flatMap {
            apiCall.runTaskFromServer()
    .map{
    
    when(it){
    is ResponseClass.Success ->{
    keepRunningsaidTasks()
    }
    is ResponseClass.Failure ->{
    disposeTask() //this will stop the task in instance of a network failure.
    }
    }
    
    }
    

提交回复
热议问题