구조화된 동시성코루틴 스코프는 구조화된 동시성을 가진다고 했다.- 자식은 부모로부터 컨텍스트를 상속받는다.- 부모는 모든 자식이 작업을 마칠 때까지 기다린다.- 부모 코루틴이 취소되면 자식 코루틴도 취소된다.- 자식 코루틴에서 에러가 발생하면, 부모 코루틴 또한 에러로 소멸한다. 자식이 부모로부터 컨텍스트를 물려받는 건 코루틴 빌더의 가장 기본적인 특징이다.이 구조화된 동시성의 특징 중 세 가지는 Job 컨텍스트와 관련이 있다. Job은 코루틴을 취소하고, 상태를 파악하는 등 다양하게 사용될 수 있다. Job?Job은 수명을 가지고 있으며 취소가 가능하다. Job은 인터페이스이지만 구체적인 사용법과 상태를 가지고 있다는 점에서 추상 클래스처럼 다룰 수도 있다.Job의 수명은 상태로 나타낸다. `Acti..
코루틴 빌더가 뭔데중단 함수는 일반 함수를 호출 가능하지만, 일반 함수는 중단 함수를 호출할 수 없다.모든 중단 함수는 또 다른 중단 함수에 의해 호출되어야 하는데 결국 그 앞엔 시작점이 있을 것이다. 코루틴 빌더가 그 역할을 한다.즉, 코루틴을 생성하는 메서드인 것이다. 코루틴 빌더의 종류- launch- runBlocking- async 각각 다른 쓰임새가 있다 천천히 알아보자. launchlaunch의 작동 방식은 thread 함수를 호출하여 새로운 스레드를 시작하는 것과 비슷하다. 불꽃놀이를 할 때 각각의 불꽃이 하늘 위로 각자 퍼지는 것처럼 별개로 실행된다.다음 예제에서는 '슛'이 실행되고 1초 후 '펑'들이 실행되는 것을 볼 수 있다. 여기서 `Thread.sleep` 을 하는 이유는, 메인 ..
목표 메인 화면에서 에뮬레이터에서는 드물게, 실기기에서는 때때로 화면의 미세한 버벅거림이 나타났다. (정말 자세히 눈이 빠지도록 봤음..) 이유는 단순히 '데이터를 한 번에 가져와서 버벅거리나 보다!'라고만 생각했다. 그러나 꽤 많은 요소들이 화면을 버벅거리는데 기여(?)하고 있었다. 천천히 알아보자 페이징을 도입했지만.. 페이징은 언젠가 도입해야 할 거라 생각했고, 때마침? 화면 버벅거림을 발견했기 때문에 , 페이징을 도입했다. RecyclerView.Adapter를 PagingDataAdpater로 바꾸고 PagingSource를 만들었다. 그리고 테스트해 봤는데.. 미세하게 버벅거린다.. 물론 가끔씩..이다.. 뭐가 문제지 보다가 안드로이드 스튜디오에서 제공하는 Profiler로 분석해 보았다. 퍼..
문제 프로젝트의 앨범 상세 보기 화면에서 이미지 상세로 들어갈 때, 부드러운 연출을 위해 애니메이션을 줬다. 그리고 성공적으로 되는듯 했으나, 가끔씩 이미지가 깜빡거리면서 보이는 현상을 발견했다. (실제 기기에서는 더 심했음) 왼쪽) 애니메이션 적용 오른쪽) 문제점 왜 이런 현상이 발생할까? 상세 보기 화면(이하 A화면) 에서 이미지 상세 화면 (이하 B화면)으로 갈 때 모든 이미지 url 을 argument로 넘겨주다보니, 이미지가 로딩이 다 되지 않고 애니메이션이 이루어지기 때문에 이런 현상이 일어난 것으로 보인다. 애니메이션 시점과 이미지 로딩 시점이 일치하지 않기 때문에 발생한 것 - 처음 사진을 클릭 했을 때보다 그 아래에 나오는 사진을 클릭 했을 때 현상이 더 도드라졌다. 더 자세히 분석해보자..