티스토리 뷰
RxJava
의 PublishSubject
개념을 알고 있어야 합니다. RxJava을 통하여 ViewModel을 구현 시 Variable 변경에 따른 비동기 이벤트 처리 방법에 대해서 고민이 있을거 같습니다. RxJava 에서는 PublishSubject 을 Create() 하여 Data 를 보내고 비동기로 받을 수 있습니다.
PublishSubject을 create() 메소드를 사용하여 생성합니다. 생성한 PublishSubject을 subscribe 로 구독상태로 설정합니다. 구독상태로 설정되면 PublishSubject 에 Data를 보내게 되면 비동기로 Data가 넘겨지게 됩니다.
PublishSubject 생성 방법
PublishSubject.create()
PublishSubject Subscribe(구독)
PublishSubject.subscribe{
// Todo..
}
PublishSubject Data 보내기
PublishSubject.onNext(data)
그렇다면 MVP 패턴으로 Rx을 활용한다면 어떻게 구성할 수 있을까요?
위에 언급한 PublishSubject 을 활용하면 쉽게 구성할 수 있습니다.
Presenter에서는 PublishSubject을 생성, 구독, 전송을 구성합니다.
Presenter
class Presenter: Constants.presenter{
private var observableValueForString: Subject<String> = PublishSubject.create()
private fun changeValue(){
observableValueForString.subscribe{
Lod.i("TEST", message)
}
}
override fun setMessage(msg: String){
observableValueForString.onNext(message)
}
}
Constants
interface Constants{
interface view{
}
interface presenter{
setMessage(msg: String)
}
}
Activity 에서는 presenter의 setMessage을 통하여 Data을 전송합니다.
Activity
public class Activity: AppCompatActivity() Constants.view{
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val presenter : Constants.Presenter = Presenter()
btn_send_message.OnClickListener{
presenter.setMessage(msg: "Say Hellow.")
}
}
}
MVP 패턴을 활용한 방식을 공유하였는데요. PublishSubject을 활용하여 구독 목적으로 예시를 만들다보니 Variable 을 Overable로 변경한 의미가 없어지는거 같습니다.
PublishSubject을 다양한 방법으로 사용하신다면 보다 유용하게 사용할 것으로 기대됩니다.
정리
PublishSubject 을 통하여 Variable 을 Overable 하는 방법에 대해서 정리하였습니다. Variable 변화에 따른 비동기 처리시 MVVM(Model, View, View-Model) 을 사용한다면 PublishSubject 을 활용하여 구성하면 효과적으로 구성할 수 있을 것으로 예상됩니다.
참고사항
'프로그래밍 > Android' 카테고리의 다른 글
Android FCM (Firebase Cloud Messaging) 구현해보자 (5) | 2018.08.23 |
---|---|
Android Chuck Library 사용해보자 (0) | 2018.08.17 |
Android Dagger 활용하기 (0) | 2018.07.20 |
Dagger 간단히 알아보기 (0) | 2018.07.18 |
Android Google Play 배지 받는 방법 (0) | 2018.07.13 |
- swift
- Android Studio
- MCC
- flutter
- DI
- missioon
- 알고리즘
- push
- 선교
- java
- 패턴
- 안드로이드
- 고시문
- issue
- missionchina
- 탁구
- 점수판
- IOS
- view
- 임용고시
- IT
- RXjava
- 스코어헬퍼
- 미션차이나센터
- Kotlin
- Android
- 디자인패턴
- 고시문헬퍼
- 코틀린
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |