이전 글에서 코루틴을 취소하는 방법에 대해 설명해보았다. 여기서 생각해볼만한 것이 하나 있는데 바로 CancellationException을 사용해코루틴을 종료시키기 직전 특정 작업을 하는 경우이다. 더 정확히 따지면 suspend function 호출이 필요하지만 불가능한 경우이다. 예제 코드와 같이 보자. 예제 코드fun main() = runBlocking { val job = launch(Dispatcher.Default) { repeat(10) { index -> if (isActive) { println("repeat $index") Thread.sleep(100) } else { ..
이번 글에서는 코루틴을 취소할 때 어떤 취소 방법을 취해야하는지에 대해 설명해본다. 코루틴 안에서 반복문을 실행하는 도중 취소하는 상황을 예시로 보자. 코드 예제fun main() = runBlocking { val job = launch(Dispatcher.Default) { repeat(10) { index -> println("repeat $index") Thread.sleep(100) } } delay(250) println("Cancel coroutine") job.cancel()}위 예제를 실행한 결과를 먼저 예상해보자. 만약 이 코드가 정상적으로 repeat 0~2까지만 실행됐을거라고 생각했다면 오산이다. 취소..
이번 글에서는 테스터 환경을 어떻게 변화시켜왔는지 공유해보려 한다. 이 과정은 체감상 내 답답함 80%, 개척 20% 정도의 시간 소요가 있던 작업이다. 윗 문장을 이해하기 힘들 수 있다. 내 시간 흐름이 어땠는지 적어보겠다. APK 직접 배포하기회사에 처음 들어와서 어떤 업데이트 사항이 생기면 완성된 결과물을 QA팀에 전달해야 했다. 이 때, APK를 직접 빌드해서 메일로 전달했다. 초반에는 귀찮지 않았다. 그 이유로는드디어 내가 회사에서 일을 하는구나메일 용량 제한에 제약이 없다.그렇게 나는 점점 배포해야할 앱이 많아지고,결국 그룹웨어가 변경되고 나서는 메일함에 용량이라는 제약이 생기기 시작했다. 내가 QA팀에 APK를 전달할 때마다 메일함이 차오르기 시작했다.(+ 타 부서에서 설치파일을 원하는 경우..