본문 바로가기

함께하는 이야기들16

[Kotlin] 언제 뭘 써야 돼? 헷갈리는 스코프 함수 한 방 정리 코틀린은 기본적으로 '표준 스코프 함수 (Scope Function)' 라는 것을 제공한다. 스코프 함수는 특정 객체의 컨텍스트 내에서 특정 동작 (프로퍼티 초기화, 활용 등) 을 실행하기 위한 목적만을 가진 함수다. 스코프 함수를 람다 함수로 사용하게 되면 임시로 스코프를 형성하는데, (그래서 이름이 스코프 함수다.) 이 스코프 내에서는 객체의 이름을 통해 일일히 참조할 필요 없이 객체를 접근하고 핸들링할 수 있다는 편리하다는 장점이 있다. 코틀린이 제공하는 스코프 함수는 총 5가지로, [ apply, run, with, alse, let ] 로 이루어져있다. 그런데, 얼핏 보기에는 역할이나 수행하는 기능들이 너무 비슷해서 무슨 상황에 무엇을 써야할 지 헷갈리게 된다. 필자도 엄청 헷갈려서 매번 닿는대.. 2021. 3. 15.
[Android] WorkManager 'Could not instantiate Worker' 해결법 Android JetPack Component 에 'WorkManager' 라는 친구가 있다. 초기 안드로이드는 백그라운드 실행 정책이 느슨했기 때문에 여러 앱이 각자 백그라운드 태스크를 수행하면서 스마트폰의 자원을 엄청 소비하며 최악의 상황에 다다르기도 했다. 그래서 버전이 올라가면 올라갈 수록 앱의 백그라운드 실행 정책이 까다로워지게 되었다. 하지만 엄격해진 백그라운드 정책에도, 몇 가지 제약 조건에 부합하고 사용자의 기기 상태를 존중한다면 (잠자기 모드에 있는 스마트폰을 깨우지 않는 등) 손쉽게 백그라운드 태스크를 등록할 수 있게끔 도와주는 녀석이 바로 'WorkManager' 다. 2018년 구글 I/O 에서 처음 공개되었다. WorkManager 를 활용하여 특정 태스크 (백그라운드에서 실행될 .. 2021. 2. 24.
[Android] 안드로이드 10 이상 기기에서 클립보드 액세스가 안될 때 앱을 개발하다보면 사용자의 클립보드 데이터를 활용하는 기능이 있다. 대표적으로 카카오뱅크, 토스와 같은 뱅킹 앱의 '복사한 계좌로 이체하기' 기능이 있다. 앱을 진입할 때마다 클립보드에 있는 데이터를 액세스하여 만약 계좌 번호 정보가 담겨있다면 해당 계좌로 빠른 송금을 할 수 있도록 토스트 메세지를 띄워주는 기능이다. 사용자 경험 상 엄청난 편리함을 제공하는 기능이다. 이런 기능이 구현될 수 있었던 것은 Android, iOS 가 클립보드 접근 프레임워크를 제공해주기 때문이었다. 그런데 필자는 개발중인 앱에 이 클립보드 프레임워크를 기반으로, 클립보드 데이터를 액세스하고 검사하여 사용상 편리를 제공하는 기능을 구현하던 중 이상한 점을 발견했다. 당연하게도 Android 공식 문서에서 클립보드 프레임워크 .. 2021. 2. 20.
[Android] Koin 을 통한 ViewModel Injection 먹통 오류 해결 방법 Koin 라이브러리를 활용하여 프로젝트에 DI 를 진행하면 코드의 재 사용성이 높아지고, 분명 유지보수에 용이해진다. Koin 이 제공하는 다양한 기능들 중 강력한 기능이 하나 있는데, 바로 ViewModelProvider 없이 ViewModel 인스턴스를 생성하여 사용할 수 있는 기능이다. 또한 Fragment 에서 Activity 의 ViewModel 을 재사용할 수 있도록 도와주기도 한다. KoinModules 에 ViewModel 을 추가해주고, startKoin 의 Modules 목록에 이를 추가하기만 하면 된다. 하지만 필자는 어느날 앱을 개발하던 중 Koin 을 활용하여 ViewModel 인스턴스를 생성하려고 했으나 Koin 에서 제공하는, ViewModel 주입을 위한 'by viewMod.. 2021. 1. 27.