RxJava

λ¦¬μ—‘ν‹°λΈŒ ν”„λ‘œκ·Έλž˜λ° (Reactive Programming) 은 비동기 데이터 흐름 (Data Flow) 에 κΈ°λ°˜μ„ λ‘” ν”„λ‘œκ·Έλž˜λ° νŒ¨λŸ¬λ‹€μž„ 이닀.

λ¦¬μ—‘ν‹°λΈŒ ν”„λ‘œκ·Έλž˜λ°

이 λ°μ΄ν„°μ˜ 흐름은 마치 κ°•κ³Ό κ°™μ•„μ„œ 이λ₯Ό κ΄€μ°°ν•˜κ±°λ‚˜ 필터링 ν•˜κ±°λ‚˜ λ‹€λ£°μˆ˜ 있으며 μƒˆλ‘œμš΄ μ‚¬μš©μžλ₯Ό μœ„ν•œ μƒˆλ‘œμš΄ 흐름을 λ§Œλ“€κΈ° μœ„ν•΄ λ‹€λ₯Έ 흐름과 병합할 수 μžˆλ‹€.

Gradle ν™˜κ²½μ—μ„œ μ„ΈνŒ…ν•˜κΈ°

build.gradle 파일 내에 ν•˜κΈ° 의쑴 μš”μ†Œ μΆ”κ°€



Β 



dependencies {
  ...
  compile 'io.reactivex.rxjava2:rxjava:2.2.0';
  ...
}

Observer Pattern

μ˜΅μ €λ²„ νŒ¨ν„΄

μ˜΅μ €λ²„ νŒ¨ν„΄μ€ 객체의 μƒνƒœ λ³€ν™”λ₯Ό κ΄€μ°°ν•˜λŠ” κ΄€μ°°μžλ“€, 즉 μ˜΅μ €λ²„λ“€μ˜ λͺ©λ‘μ„ 객체에 λ“±λ‘ν•˜μ—¬ μƒνƒœλ³€ν™”κ°€ μžˆμ„ λ•Œ λ§ˆλ‹€ λ©”μ„œλ“œ 등을 톡해 객체가 직접 λͺ©λ‘μ˜ 각 μ˜΅μ €λ²„μ—κ²Œ ν†΅μ§€ν•˜λ„λ‘ ν•˜λŠ” λ””μžμΈ νŒ¨ν„΄μ΄λ‹€.

λΆ„μ‚° 핸듀링 μ‹œμŠ€ν…œμ„ κ΅¬ν˜„ν•˜λŠ”λ° μ‚¬μš©λ˜λ©° λ°œν–‰/ꡬ독 λͺ¨λΈλ‘œ μ•Œλ €μ Έ μžˆκΈ°λ„ ν•œλ‹€.
크게 μ•„λž˜μ™€ 같이 κ΅¬λΆ„λœλ‹€.

  • Observable : 이벀트λ₯Ό λ°œμƒμ‹œν‚¨λ‹€.
  • Subscriber : λ°œμƒλœ 이벀트λ₯Ό λ°›μ•„ μ²˜λ¦¬ν•œλ‹€.

RxJava μ—μ„œμ˜ 이벀트의 λ°œμƒ, μ’…λ£Œ, μ—λŸ¬λŠ” μ•„λž˜μ™€ 같이 ν‘œν˜„μ΄ λ©λ‹ˆλ‹€.

  • onNext : 이벀트의 λ°œμƒ
  • onCompleted : 이벀트 μ’…λ£Œ
  • onError : μ—λŸ¬κ°€ λ°œμƒ