안드로이드에서 Flow로 읽어오는 데이터는 UI에 사용될 시, 주로 viewmodel에 저장하는 livedata형태로 변환해서 사용하게 된다. UI 업데이트는 observable한 데이터를 필요로 하기 때문이다. Flow는 cold stream이기 때문에 observable한 형태는 불가능하다. 옵저버 패턴은 다른말로 발행-구독(Publisher-Subscriber) 모델로 말하기도 하는데, 발행하는 쪽이 데이터가 바뀔 때마다 구독자들에게 브로드 캐스팅을 해야하기 때문에, hot stream 형태로 구현되어야 한다. 만약, livedata를 사용하지 않는다면? Flow만으로는…
[태그:] coroutine
Kotlin: Coroutines
coroutine을 알기위해선 asynchronous process의 역사를 간략이 알아야할 필요가 있다. async process, 즉 비동기 처리는 예전부터 필요한 경우들이 있다. 예를 들어 네트워킹, DB 작업등은 응답에 시간이 걸리기 때문에, 메인쓰레드에서 처리하게되면 그동안 프로그램이 멈추게된다. 그래서 쓰레드를 이용한 처리방식이 일반적이다. 문제는 쓰레드라는 놈이 다루기 너무 까다롭다는데 있다. 일단, 별도의 context를 갖기 때문에, 쓰레드를 생성하는 일은 부하가 크게 걸리는…
Unity 의 Coroutine에 대해 알아보기
유니티를 공부하던 중, 알아야 하지만 이해하기 어려운 개념을 접했다. 바로 Coroutine. 일반적인 사용은 다음과 같다. 위 코드는 유니티 공식 사이트에서 Script 설명중 Coroutine에 대한 설명에서 따온 것이다. StartCoroutine 호출이 보이고, MyCoroutine은 IEnumerator 반환값을 갖는다. 함수안에는 yield return null;, yield return new WaitForSeconds(3f) 와같이 사용한다. 첫 감상은 “이게 다 대체 뭐야?” 일단, 키워드들을 추출해 봤다. StartCoroutine, IEnumerator,…