전체 글

전체 글

    [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..

    [Android] SingleLiveEvent의 원리

    SingleLiveEvent를 사용하는 이유를 설명할 수 있어야 한다. LiveData를 이용하다보면, View의 재활성화 (start나 resume 상태로 재진입)가 되면서 LiveData가 observe를 호출하여, 불필요한 Observer Event까지 일어나는 경우가 있습니다. 이를 방지하기 위해 기존 LiveData를 상속하여 만들어낸 것이 SingleLiveEvent입니다. (SingleLiveEvent에 대해 상세히 알고싶다면 - 링크) 일반적인 SingleLiveEvent 코드는 다음과 같습니다. import android.util.Log import androidx.annotation.MainThread import androidx.lifecycle.LifecycleOwner import..

    안드로이드 추천 오픈소스8) Time Line View

    https://github.com/vipulasri/Timeline-View vipulasri/Timeline-View Android Timeline View is used to display views like Tracking of shipment/order, steppers etc. - vipulasri/Timeline-View github.com 간지남 0. 한장 소개 1. 장점 최근까지도 계속하여 업데이트 되고 있음 Issue 처리가 굉장히 빠른 편임 RecyclerView 형태로 되어 있어 접근성이 용이함 색상, 줄 모양 등 커스텀이 편함 일단 Timeline 용도로 사용하기에 모자름은 딱히 보이지 않음 2. 단점 가이드라인이 조금 부족하여 원하는 커스텀은 약간의 공을 들여야함

    [Android/kotlin] List vs MutableList vs ArrayList vs LinkedList

    📌 List vs MutableList vs LinkedList vs ArrayList 🐳 List와 MutableList의 차이 Kotlin은 많은 변수들을 Mutable 여부로 나누고 있다는 것을 잊지말자. List Collcection에서도 List와 MutableList의 차이는 Read-Only인지 아닌지의 차이이다. 그러나, Compile Time에는 둘다 List로써 인식된다. 이는 MutableList가 List를 상속하여 만들어졌기 때문이다. 결국 둘 다 컴파일 결과로 java.util.List 이 된다. public interface MutableList : List, MutableCollection { ... } 🐬 MutableList와 ArrayList의 차이 MutableList..

    [Android] 생명주기 테스트

    📌 생명주기 테스트 생명주기를 여러 번 공부해왔고, 실전에서도 많이 사용해보았지만, 내 자신에게 '생명주기에 대해서 낱낱히 설명해 봐!' 라고 묻는다면, 늘 새로운 기분이 든다. 오늘은 약간이라도 애매한 부분을 확신으로 바꾸기 위하여 생명주기 테스트 프로젝트를 만들어 보기로 하였다 🧩 Test Case A Activity → B Activity → A Activity A Activity → Transparent Activity (배경이 투명한 투명 액티비티) → A Activity A Activity → B Activity → B Activity (singleTop) 테스트를 하는 생명주기들 enum class LifeCycleEx{ CREATE, RESTART, START, RESUME, PAUSE, ..

    [Android] Activity 좌우로 전환 애니메이션 적용하기

    📌 Activity 좌우로 전환 애니메이션 적용하기 안드로이드는 위 아래로 전환되는 애니메이션을 기본적으로 적용하고 있습니다. 이를 좌우로 전환시키도록 바꾸고 싶을 때, 아래와 같은 설정을 해주시면 됩니다. // in Activity override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) with(window) { enterTransition = Slide().also { it.excludeTarget(android.R.id.statusBarBackground, true) it.excludeTarget(android.R.id.navigationBarBackground, true) it.slideEdge ..

    [Kotlin] 함수형 프로그래밍

    📌 함수형 프로그래밍 위키 백과에는, 자료 처리를 수학적 함수의 계산으로 취급하고 상태와 가변 데이터를 멀리하는 프로그래밍 패러다임이라 적혀있습니다. 수학적 계산이라 함은, 식으로 표현할 수 있다는 것이고, 이는 같은 값을 넣었을 때는 항상 같은 결과가 나온다는 것 인데요. 이것을 프로그래밍적으로 해결하기 위해 순수 함수와 일급 객체를 사용합니다. 그렇다면 순수 함수와 일급 객체는 무엇일까요? 📒 순수 함수 순수 함수란 같은 인자에 대하여 항상 같은 결과를 반환하며, 외부의 인자를 변경하지 않는 함수입니다. 순수 함수와 비순수 함수의 예시를 보며 비교해봅시다. 순수 함수의 예 fun sum(a: Int, b: Int) = a + b 비순수 함수의 예 var c = 100 fun sum(a: Int, b:..