인자로 넣은 데이터를 차례로 발행하려고 Observable을 생성합니다. 특정 값이나 미리 정의된 값
집합을 발행하는 Observable을 생성하는 데 주로 사용된다.
백문이 불여일타 보는 거 보다는 직접 코드를 쳐보시면 이해가 가실 겁니다😃
subscribe()
에서는 생성한 Observable을 구독하고, 발행된 각 항목을 println 함수를 통해 출력합니다."The result of subscribe is not used"
경고 메시지가 떠서 .let { -> }으로 경고 메시지를 무시하였습니다. 경고의 의미는 구독 결과를 사용하지 않는다는 의미입니다. 그래서 let 함수를 이용해 람다 식을 인자로 받아 그 람다 식을 실행한 뒤 결과를 반환해 경고를 무시하였습니다. // 단일 항목을 발행하는 Observable 생성
Observable.just("안녕하세요, RxJava!")
.subscribe(::println)
.let { _ -> }
단일 항목을 발행하는 Observable과 똑같지만 .just()
함수에서 파라미터 부분에서 여러 개를 넣어주면 여러 항목을 발행할 수 있어요. 파라미터 부분을 확인해 보니 10개까지 넣을 수 있을 거 같아요
Observable.just("치토스", "포카칩", "빼빼로")
.subscribe(::println)
.let { _ -> }
Observable
에 Observer
를 구독시키고 Observable
은 데이터를 발행하고, Observer
는 해당 데이터를 처리를 하는 예제입니다.Observer
인터페이스를 구현한 익명 클래스를 만들어 onSubscribe(), onError(), onComplete(), onNext()를 처리를 해줄 수 있어요. class MainActivity : AppCompatActivity() {
companion object {
const val TAG ="MainActivity"
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// 정적인 값을 방출하는 Observable을 생성
// just : 인자로 넣은 데이터를 차례로 발행하려고 Observable을 생성한다.
val observable = Observable.just(1,2,3,4,5)
val observer = object : Observer<Int> {
// Observer가 구독(subscribe)을 시작할 때 호출됩니다
override fun onSubscribe(d: Disposable) {
Log.d(TAG,"onSubscribe")
}
// 에러가 발생했을 때 호출
override fun onError(e: Throwable) {
Log.d(TAG,"onError ${e.toString()}")
}
// Observer가 모든 데이터를 성공적으로 처리하고 완료되었을 때 호출
override fun onComplete() {
Log.d(TAG,"onComplete")
}
// Observable로부터 데이터를 수신할 때 호출됩니다.
override fun onNext(t: Int) {
Log.d(TAG,"onNext : $t")
}
}
// Observer를 Observable에 구독한다. 이를 통해 Observable은 데이터를 발행하고
// Observer는 해당 데이터를 처리하게 됩니다.
observable.subscribe(observer)
}
}
참고 자료
https://reactivex.io/documentation/operators/just.html
https://zzandoli.tistory.com/27