<RxJava>Create

진섭·2023년 5월 27일
0

RxJava

목록 보기
8/20
post-thumbnail

📌 Create 연산자란?

공식 문서에 따르면 직접적인 코드 구현을 통해 옵저버 메서드를 호출하여 Observable을 생성한다 라고 기록이 되어 있다. 쉽게 생각하면 Observable을 제어하고 사용자가 원하는 동작을 정의 할 수 있는 연산자이다.

주의해야 할 점은 Observable을 동작 내에서 적절한 시기에 onNext, onError, onComplete를 호출하여 올바른 신호를 보내야 합니다.

📌 Create 사용법

Observable.create(emitter -> {
    // Observable을 동작 정의
    
    // Observable을 생성한 후
    // onNext : 메서드를 호출하여 값을 발행한다.
    // onError : 메서드를 호출하여 에러 신호를 보낸다.
    // onComplete : 메서드를 호출하여 완료 신호를 보낸다.
})

📌 Create 예제

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        createOperator().subscribe(
            {
                Log.d("createOperator", "onNext : $it")

            },
            {
                Log.d("createOperator", "onError ${it}")
            },
            {
                Log.d("createOperator", "발행완료")
            }
        ).let { _ -> }
    }
}

fun createOperator(): Observable<Int> {
    val mListNum = mutableListOf(1, 2, 3, 4, 5)
    return Observable.create(ObservableOnSubscribe {
        try {
            for (i in mListNum) {
                it.onNext(i * 5)
            }

            it.onComplete()

        } catch (e: Exception) {
            it.onError(e)
        }
    })
}
  • mListNum에 발행할 값을 담은 리스트 생성했습니다.
  • ObservableOnSubscribe는 사용자 정의 Observable을 생성하기 위해 구현해야 하는 인터페이스이며 create 연산자의 매개변수로 사용되며 Observable을 생성하고 동작을 정의하는 역할을 수행한다.
  • try ~ catch로 예외 처리를 해주었고 예외가 발생하면 catch 부분에서 에러 신호를 전달( it.onError(e)) 해 주었습니다.
  • mListNum의 각 요소에 곱하기 5한 값을 it.onNext를 호출하여 발행했습니다.
  • 모든 값들이 발행 후 it.onComplete()를 호출하여 완료 신호를 보냈습니다.

출력결과

profile
Android 개발자

0개의 댓글