티스토리 뷰

반응형

Android RXJava 을 활용한 Variable Overable 만들기 위해서는 RxJavaPublishSubject 개념을 알고 있어야 합니다. 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 을 활용하여 구성하면 효과적으로 구성할 수 있을 것으로 예상됩니다.


참고사항


반응형
댓글