Kotlin사용자라면 Sythetic pulgin이 deprecated되고 ViewBinding(구글의 권장사항)으로 마이그레이션 해야된다는 걸 알고 있을 것이다. 그런데 ViewBinding을 프레그먼트에서 사용하게 될 경우 Memory leak과 관련된 이슈가 있는 것도 아마 알 것이다. (구글 문서에 나와있으므로) 아래는 개발자 문서의 샘플코드이다.(https://developer.android.com/topic/libraries/view-binding) private var _binding: ResultProfileBinding? = null // This property is only valid between onCreateView and // onDestroyView. private val b..
코루틴이 무엇인지에 대한 정의는 인터넷에 넘쳐나기 때문에, 다시 추가적으로 설명하지 않으려고 한다. 다만 최근 구글에서 안드로이드 플랫폼에서 Concurrent job을 처리하기 위한 공식적인 방법으로 권장하기 시작했다는 점을 언급하고 싶다. 만약 코틀린으로만 된 프로젝트라면 RxJava나 다른 솔루션보다는 코틀린에서 제공하고 구글이 공식적으로 인정한 코루틴을 사용하는 것이 자연스러운 선택이라고 할 수 있을 것 같다. 그럼, 코틀린은 어떤 모습이고, 왜 cocurrent job을 처리하는데 좋다고 할까? 먼저, 자바의 Thread에 대해 간략히 살펴보기로 하자. Thread 의 제약점을 통해 왜 코루틴이 유용한지 이해하는데 도움이 될 것이다. fun main() { new Thread() { printl..
요즘 Coroutines는 좀 더 심도있게 공부하기 위해 온라인 강좌를 듣고 있는 중이다. 강좌가 진행되면 될수록 드는 생각이지만 Kotlin Coroutines는 생각만큼 단순하지 않다는 것이다. 아니 상당히 까다로운 프레임웤이라는 것이다. 주된 이유는 내부 메카니즘의 복잡함에 있다고 할 수 있는데, 특히 Cancellation과 Exception Handling으로 들어가면 직관적이지 않은 동작 때문에 Coroutines가 어떻게 동작하는지 정확한 이해가 없을 경우 정말로 골치아픈 버그를 접하게 될 가능성이 많다는 점이다. 예를 하나만 들어보자. class CoroutineTest { @Test fun exceptionTest() { runBlocking { val scopeJob = Job() va..