특정 시간별로 연속된 정수형을 배출하는 Observable을 생성하는 연산자이다. 이 연산자는 주기적인 작업이나 타이머 기능을 구현하는 데 유용합니다. 즉 주기적으로 데이터를 가져오거나 타이머 이벤트를 처리하거나, 일정한 간격으로 작업을 수행하는 등을 구현할 수 있어요. 이 연산자는 앱이 종료하거나 중지할 때 까지, 돌아가요. 그래서 저는 Log를 찍어서 결과를 확인했네요. println으로 찍으면 결과가 안 나와요
interval
파라미터 안에 initialDelay
첫 번째 값을 발행하기 전까지 대기하는 시간 즉 0으로 하면 바로 값이 나오고 2로 하면 2초뒤에 값이 발행된다. , period
initialDelay로 인해 값이 나온 후에 값을 발행하는 시간 간격,timeUnit
initialDelay, period 시간의 단위 즉 TimeUnit.SECONDS
이렇게 하면 초를 의미한다
Observable.interval(initialDelay, period, timeUnit)
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
intervalOperator().subscribe(
{
Log.d("intervalOperator","onNext : $it")
},
{
Log.d("intervalOperator","onError ${it}")
},
{
Log.d("intervalOperator","onComplete")
}
).let { _ -> }
}
fun intervalOperator(): Observable<Long> {
return Observable.interval(5, 2, TimeUnit.SECONDS).takeWhile { value ->
value <= 5
}
}