Android 7

Android - Coroutines best practices

공식문서에서 제시한 순서대로 나열 1. Inject Disptachers새로운 코루틴을 만들거나, withContext 를 호출할때 디스패처 하드코딩 피해라. 테스트 할때 TestDispatcher 주입하는게 더 쉬워진다. Note: The viewModelScope property of ViewModel classes is hardcoded to Dispatchers.Main. Replace it in tests by calling Dispatchers.setMain and passing in a test dispatcher. 2. Suspend functions should be safe to call from the main thread suspend function 을 호출하는 호출부에서 어떤 D..

Android 2024.05.15

3. Kotlin Coroutine - Concurrency issues

https://medium.com/androiddevelopers/coroutines-on-android-part-iii-real-work-2ba8a2ec2f45 코루틴은 어떻게 코드를 단순화하고, main-safety 를 제공하고, leaking work 를 피할 수 있는지 등을 살펴봤다.  실제 어떤 작업에 코루틴을 써먹는게 좋냐? 1. One shot request : 호출 될 때 마다 실행되는 작업. 결과가 준비되면 완료된다. 2. Streaming requests : 변화를 지속적으로 관찰하고 호출자에 이를 report 한다. 첫 결과가 준비되더라도 끝나지 않는다.  One shot request 의 구체적인 예시를 살펴보자. - 정렬된 목록을 사용자에게 보여주는 경우class ProductsV..

Android 2024.05.15

2. Kotlin Coroutine - Structured Concurrency, viewModelScope, coroutineScope

https://medium.com/androiddevelopers/coroutines-on-android-part-ii-getting-started-3bff117176dd 복습 해보자. 코루틴은 어떤 문제를 해결하는가? 1. 메인스레드 위에서 돌아가기에는 너무 긴 작업들에 대해서 처리2. Main-safety 로 인해 suspend 함수들이 메인스레드에서 호출 가능  그래서 코루틴은 일반 함수의 연산(invoke, return) 외에 suspend, resume 연산까지 갖는다.  코루틴 관리하기 (Keeping track of coroutines) 코루틴을 왜 관리해야 할까? 코루틴 자신은 수행되는 작업을 관리하도록 도와주지 않음. 코루틴을 아주 많이 실행시키는 것은 물론 가능하지만, 비싼 연산을 하고..

Android 2024.05.15

1. Kotlin Coroutine - suspend, resume, Dispatchers.

https://medium.com/androiddevelopers/coroutines-on-android-part-i-getting-the-background-3e0e54d20bb 코루틴의 개념의 첫 구현체는 Simula (1967)  Android 에서 코루틴의 역할은 뭘까? 1. Main thread 를 블럭하는 긴 태스크 (long-running task) 처리 2. Main-safety 는 어떤 suspend function 이든 main thread 에서 호출될 수 있도록 함 suspend 키워드는 코틀린 컴파일러에 특수한 처리를 가하기 위한 용도. suspend function 은 일반 함수와 달리 두 가지 연산이 더 있음. 일반 함수에서 제공하는 invoke (or call), return ..

Android 2024.05.15

멜론 UI 에 대한 나의 생각

2020년 2월 8일 깃헙 블로그에 작성했던 "안드로이드 멜론 앱의 UI에 대한 생각들" 멜론 앱 UI 분석 Bottom Sheet Dialog Bottom Sheet Dialog는 곡 제목 가장 우측의 세로로 된 ... 모양의 버튼을 눌렀을때 뜬다. 유저는 카톡 프사로 음악을 설정할 지, 다운로드 할지 등등 여러 액션을 선택할 수 있다. 이 때 닫기 버튼 바로 위에 흰색 그래디언트가 보인다. 그래티언트는 유저에게 "리스트가 아직 끝나지 않았으며 더 다양한 액션의 종류가 있음"을 시사한다. 자연스럽게 스크롤을 이끌어낼 수 있다는 점에서 매우 정교한 디자인이다. 한 편 아쉬운 점은 가장 하단의 닫기 버튼의 색 마저 흰색이라는 점이다. 그래디언트를 따라 스크롤을 하다가 자칫하면 닫기를 누를 수 있다. 리스트..

Android 2022.01.26

Javascript code 안에 들어가기

고팍스에서 이번에 새로 들어가는 기능이 있는데, WebView 로 띄우는 html 안에다가 텍스트 버튼을 추가해야 했었다. 처음 태스크를 받았을 때 JavascriptInterface 써서 이렇게 저렇게 쉽게 하면 되겠네, 생각을 했었으나 나의 착각이었다. 태스크가 생각보다 복잡했던 이유는 다음과 같다. 1. 네트워크 요청을 통해서 어떠한 리스트를 받아와 해당 리스트에 있는 요소일 경우에만 버튼을 띄워주어야 한다. 2. 리스트의 길이가 크기 때문에 캐싱을 해야한다. 3. 네트워킹, 캐싱 코드는 현재 코드베이스를 disrupt 하면 안된다. 4. 안드로이드 웹뷰 자체의 성능이 좋지 않기 때문에 불필요한 연산을 최소화 해야 한다. 5. html 파일 안에 있는 iframe 내부의 또 다른 html 안의 요소..

Android 2021.03.21