Coroutine

    [Android] WorkManager + Coroutine으로 매일 특정시간에 Notification 띄우기

    매일 오후 12시에 유저에게 '특별한' Notification을 띄울 수 있는 기능을 제공하고 싶었다. 물론 이 방법을 구현하는 데에는 여러 방법이 있을 수 있다. 서버에서 각 유저에게 FCM을 보내는 방법도 있고 (Super Heavy ^^;), 죽지않는 서비스를 구현하여 12시마다 Notification을 띄워주도록 하는 방법도 있을 수 있겠다. 하지만 후자는 구글에서 지속적으로 막으려는 것을 어떻게든 피한 편법에 가깝다. 따라서 구글에서 계속해서 써보라고 제안하고있는 WorkManager을 사용하여 이를 구현하기로 했다. 사실 WorkManager는 꼭 한번이라도 써보고 싶어 예전부터 눈독들여 왔었다. 그동안 죽지않는 서비스 등의 편법으로 백그라운드 처리를 해왔기에, 뭔가 Official 하지 않은..

    [Android/Kotlin] Error Handling By CoroutineExceptionHandler In MVVM Architecture

    viewModel 내에서 Coroutine을 활용하다 보면, 에러 처리를 하기 위해 try ~ catch문을 활용하곤 합니다. 그러나 이를 남용하면 Boiler Plate가 되어버리게 됩니다. 전역적으로 발생할 수 있는 에러들을 CoroutineExceptionHandler을 통해 다루는 방법을 알아봅시다. 구현 방법에 대한 자세한 예시는 링크를 통해 보실 수 있습니다. CoroutineExceptionHandler는 사실 특별한 것이 아닙니다. (배워야 할 게 없다는 것은 아닙니다) 내부적으로는 Thread의 UncaughtExceptionHandler를 구현하는 것으로 작동하기 때문입니다. UncaughtExceptionHandler는 Thread에서 캐치되지 않은 Runtime Exception을 ..

    [Android/Kotlin] CoroutineContext이 구성요소들을 추가하는 방법

    CoroutineScope 변수를 만들 때, Job, CoroutineExceptionHandler, Dispatchers 등을 더하기 연산으로 합쳐서 만들어내곤 합니다. 이것이 어떻게 가능한 것인지 알아봅시다. Coroutine에 배정할 CoroutineContext 변수를 생성할 때, + (덧셈) 연산자로 원소들을 합치고는 합니다 1 2 3 4 5 6 7 open class ExampleViewModel: ViewModel() { protected val coroutineExceptionHanlder = CoroutineExceptionHandler { _, throwable -> throwable.printStackTrace() } protected val ioDispatchers = Dispatc..

    [Kotlin] Coroutine 연습 문제

    Coroutine을 공부하면서, 문서를 꼼꼼히 읽어봐도 실전에서는 분명 헷갈리는 부분이 적지 않았다. 그래서 다시 Unit Test를 통하여 연습하던 중에, 이를 문제 - 정답 형식의 문서로 작성해두면 좋을 것 같아 남기게 되었다. 🤔 Coroutine 연습문제 Unit Test 내에서의 결과이기 때문에 상대적으로 긴 런타임을 가지는 실제 상황과는 다른 결과가 나타날 수 있습니다. 그러나 오히려 그렇기에 공부하기에는 더 확실한 방법이므로, 출력의 보장 결과 여부는 Unit Test Runtime 기준으로 합니다. 🕐 문제 1. 출력 결과를 예상하시오. class ExampleUnitTest { @Test fun assert_test() { runBlocking { println("start") /** A..

    [Android] Retrofit With Coroutine (In MVVM Architecture)

    📌 Retrofit with Coroutine (In MVVM Architecture) 이 문서는 Coroutine 선행 공부가 되신 분들이 보기 쉽게 작성되었습니다 Coroutine에 대하여 좀 더 공부하고 싶다면 아래와 같은 페이지를 참조하세요! https://zladnrms.tistory.com/116 [Kotlin] Coroutine 연습 문제 Coroutine을 공부하면서, 문서를 꼼꼼히 읽어봐도 실전에서는 분명 헷갈리는 부분이 적지 않았다. 그래서 다시 Unit Test를 통하여 연습하던 중에, 이를 문제 - 정답 형식의 문서로 작성해두면 좋을 것 같아 남기.. zladnrms.tistory.com Coroutine을 학습하기 전 까지는 네트워크 비동기 처리를 위하여 Retrofit2을 사용하..