티스토리 뷰

반응형

* 목표 : YouTube의 title을 가져와서 화면에 표출

 

* 방법 : 결과 값으로 title 을 받아올 것이므로, RxJava의 Single을 이용한다. 

 

* 요구사항

- title을 받는 동안 progressbar를 띄운다.

- 최대 5초 동안 받을 수 있도록 한다. 

- 결과 값을 title 에 표출 한다. 

- loading 일 동안, 화면과 상호작용을 불허한다.

 

* ViewModel, LiveData, RxJava의 Single 객체


1. ViewModel 을 정의한다.

(여기서는 일반 ViewModel이 아닌 AndroidViewModel을 상속받는다. - 원래 ViewModel에는 Context 정보를 포함하면 안되지만, Room을 이용하기 때문에 Application 정보가 필요하므로 Application 객체를 제공하는 AndroidViewModel을 상속받는다.)

ViewModel은 UI 데이터를 저장하고 라이프사이클에 따른 UI 데이터를 관리한다.

- YouTube의 공유 uri를 통해 가져오는 title을 정의한다. 이에 따른 setter/getter를 정의한다.

- loading 화면을 표시하기 위한 상태 정보 waitingState를 정의한다. 이에 따른 setter/getter를 정의한다. 

 

2. LiveData를 설정한다.

- Activity에서 관찰이 필요한 데이터인 title, waitingState를 MutableLiveData로 정의한다.

 

AndroidViewModel을 상속받아 MutableLiveData인 item, waitingState를 가지고 있다.

 

3. RxJava의 SingleObservable를 정의한다.

- 비동기 작업 설정 : Callable

Observable이 처리할 작업을 Callable로 설정하여, 처리한 작업을 리턴 받도록 정의힌다.

- 비동기 작업이 실행될 위치 설정 : subscribeOn 

SingleObservable는 비동기 작업을 정의하며, Android에서는 네트워크와 통신 시, 백그라운드 작업을 수행해야 한다. 따라서, subscribeOn 은 Schedulers.io()로 설정한다.

( subscribeOn을 이용해 비동기 작업을 처리하는 io 나 computation 쓰레드, 새로운 쓰레드를 설정할 수 있다. )

- Observer의 결과 처리 위치 설정 

비동기 작업의 결과 값을 처리하는 부분은 Android의 UIThread(mainThread)이므로, observeOn을 AndroidSchedulers.mainThread() 로 설정한다.

- SingleObserver가 처리할 작업 설정

SingleObserver는 비동기 작업에 대한 결과를 처리하는 작업을 설정한다. SingleObserver는 onSubscribe, onSuccess, onError 메소드를 가지며, 각각에 맞는 처리 작업을 설정한다. 여기서는 onSubscribe 에서 loading을 실행하고, onSuccess나 onError에서는 loading을 완료한다.

Observable의 한 종류인 Single객체와 이를 구독하는 SingleObserver를 이용하여 비동기 작업 처리를 정의하고 있다.

4. Activity에서 ViewModel을 등록하여 관찰 대상에 따른 View 처리를 진행한다.

- 관찰대상인 waitingState에 따른 loading 화면 처리 작업을 등록한다.

Activity에서 ViewModel을 등록하고, 관찰대상인 waitingState의 변화에 따른 loading 화면 처리 작업을 정의하고 있다.

- 관찰대상인 title 값을 화면에 표출하기 위한 작업을 등록한다.

youTube의 공유 uri를 이용하여 네트워크를 통해 YouTube의 title 값을 가져오면, 해당 값을 화면에 표출하기 위한 작업을 정의하고 있다.

 

 

 

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/07   »
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 31
글 보관함