프로그래밍/Kotlin
-
[Kotlin new features] Sealed interface, Data object, Enum entries프로그래밍/Kotlin 2023. 9. 16. 21:03
Sealed class, Sealed interface 정리 sealed class : abstract class 처럼 하나의 클래스만 상속가능 sealed interface : 일반 interface처럼 여러 개 상속 가능 Kotlin 1.5 버전 아래부터 sealed class의 sub-class는 같은 class에 있어야 했음 Kotlin 1.5 버전 이후 부터는 같은 class 까지는 아니고 동일 package 있으면 됨 다른 모듈에서 참조가 가능한가? interface, abstract class : 다른 모듈에서도 참조 가능. sealed class/interface : 다른 모듈에서 참조 불가능. 동일 package에 있어야함 sealed class sealed interface abstra..
-
Testing Kotlin coroutines on Android프로그래밍/Kotlin 2022. 7. 19. 21:58
결론 delay()와 같이 실제 지연이 발생하면 그 지연시간을 포함해 테스트가 진행된다. runTest를 이용하면 delay를 무시해서 좀 더 빠르게 테스트를 실행할 수 있다. 단 withContext에서 Dispatcher가 변경된 경우 delay는 무시하지 않는다. 코루틴은 쓰레드에 위에서 동작하고 사용 가능한 쓰레드를 찾기 위해 코루틴용 ThreadSchdular에 스케쥴링된다. (코루틴 실행 순서와 시간에 영향) 어떤 쓰레드가 사용이 될지 예측이 불가능한 Dispatcher.IO 와 같은 코루틴 정식 Dispatcher 보다는 테스트용 TestDispatcher를 사용한다. (runTest를 사용하면 Dispatcher.IO를 무조건 사용하지 못한다. 안드로이드 개발자 가이드는 권고하지 않는 것 ..
-
Coroutine exceptions handling프로그래밍/Kotlin 2022. 6. 22. 00:14
결론 When a thread throws an exception, a process will be killed. When a coroutine throws an exception, the process will be killed too? When coroutine throws an exception, the process will be killed too. When children coroutines throw an exception, children coroutines will be canceled. 기본적으로는 child coroutine에서 Exception이 발생하면 부모 coroutine에게 자신의 실패 상태를 전파하기 때문에 나머지 children job들이 취소된다. 예외 적용 Cancel..
-
Coroutine - Cancellation and timeouts프로그래밍/Kotlin 2022. 5. 9. 19:51
https://kotlinlang.org/docs/coroutines-basics.html#structured-concurrency Canceling coroutine execution The launch function returns a Job that can be used to cancel the running coroutine: val job = launch { repeat(1000) { i -> println("job: I'm sleeping $i ...") delay(500L) } } delay(1300L) // delay a bit println("main: I'm tired of waiting!") job.cancel() // cancels the job job.join() // waits ..
-
Making our Android Studio Apps Reactive with UI Components & Redux프로그래밍/Kotlin 2020. 11. 8. 22:56
아래 글을 번역한 내용입니다. netflixtechblog.com/making-our-android-studio-apps-reactive-with-ui-components-redux-5e37aac3b244 Making our Android Studio Apps Reactive with UI Components & Redux By Juliano Moraes, David Henry, Corey Grunewald & Jim Isaacs netflixtechblog.com Netflix는 Prodicle이라는 TV프로그램과 영화 제작을 담당하는 모바일앱을 구축했다. Android와 iOS앱으로 제작되었고 4명의 엔지니어가 3개월에 걸쳐서 제작했다. 이 앱의 기능은 제작 스테프들이 촬영 스케쥴을 조정하고 제작에 ..
-
Kotlin multiplatform 프로젝트를 생성해보자프로그래밍/Kotlin 2020. 9. 1. 20:20
이 글은 영어 블로그 글을 번역하고 추가 조사한 글입니다. www.bugsnag.com/blog/kotlin-multiplatform blog.mindorks.com/getting-started-with-kotlin-multi-platform 코틀린 멀티플랫폼이란? 일반적으로 앱을 만들 때, iOS나 Android로 만든다. 그런데 디자인 변경이 있을 수 있지만, 코어 로직에 대해서는 거의 같을 것이다. 두 개의 앱을 작성하기 위해서 코틀린 멀티플랫폼은 동일한 비지니스 로직을 공유하게 하고 서로 다른 플랫폼에 대해 앱의 빌드를 제공한다. 코틀린 멀티플랫폼은 개발자가 코틀린 언어로 개발할 수 있게 한다. 또한 이는 비지니스 로직을 처리하고 개발자는 각 플랫폼의 UI만 신경쓰면 된다고 한다. 즉, 코틀린 멀..
-
Lessons learnt using Coroutines Flow in the Android Dev Summit 2019 app프로그래밍/Kotlin 2020. 1. 29. 08:56
[Lessons learnt using Coroutines Flow in the Android Dev Summit 2019 app] https://medium.com/androiddevelopers/lessons-learnt-using-coroutines-flow-4a6b285c0d06 한글 번역본입니다. Android Dev Summit 2019 App에 사용된 Flow(https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/-flow/)에 대한 내용이다. 이 앱에서 data stream을 어떻게 handle 하는지 알아보자. 이 앱은 architecture는 recommended app arc..
-
Improve app performance with Kotlin coroutines프로그래밍/Kotlin 2019. 11. 29. 00:37
Coroutine 끄적끄적 Coroutine 무엇?? 병렬성 디자인 freezing the add and blocking the main thread를 막는다 network나 disk operations를 main thread로부터 호출하는 것으로 막는다. long-running tasks를 관리해보자 croutine은 두가지 동작만 알면 된다. resume 는 현재 suspended됐던 부분부터 coroutine 실행을 다시 시작 suspend 는 현재 coroutine실행을 멈추고 모든 local variable저장 suspend는 suspend scope 안에서만 부르거나 launch 라는 coroutine builder에서 부르면 된다. suspend fun fetchDocs() { // Disp..