Language

    Kotlin 제네릭(Generic)

    클래스를 설계할 때 변수의 타입을 유동적으로 하고 싶을 때가 있을 수도 있다. (인자의 자료형을 고정할 수 없거나 예측할 수 없을때) 이 때 Generic 개념을 활용하면 클래스 작성시가 아닌 객체 생성시에 변수의 타입을 설정할 수 있다. 1. 제네릭의 일반적인 사용법 형식 매개변수 1. 제네릭 클래스 2. 자료형 변환 제네릭 클래스는 가변성을 지정하지 않으면 형식 매개변수에 상/하위 클래스가 지정되어도 서로 자료형이 변환되지 않는다 3. 형식 매개변수의 null 제어 4. 제네릭 함수 혹은 메서드 5. 젠네릭과 람다식 class TestClassA{ fun testMethod(a1:Int){ println("a1 : $a1") } } class TestClassB{ fun testMethod(a1:St..

    RxAndroid

    [1] RxAndroid 소개 RxAndroid는 RxJava에 최소한의 클래스를 추가하여 안드로이드 앱에서 리액티브 구성 요소를 쉽고 간편하게 사용하게 만드는 라이브러리입니다. 기본적인 UI 핸들링, 비동기 데이터 처리, REST API 라이브러리에 RxJava 비동기 처리 기존 안드로이드에서 발생하는 다음과 같은 문제를 안드로이드의 비동기 처리 및 에러 핸들링 수많은 핸들러와 콜백 때문에 발생하는 디버깅 문제 2개의 비동기 처리 후 결과를 하나로 합성하는 작업 이벤트 중복 실행 다음 특징을 통해 해결해준다. 간단한 코드로 복잡한 병행(concurrency)프로그래밍을 할 수 있음 비동기 구조에서 에러를 다루기 쉬움 함수형 프로그래밍 기법도 부분적으로 적용할 수 있음 1. 리액티브 라이브러리와 API ..

    [코루틴 #4 데이터 주고받기] Sequence, Flow, Channel

    Iterator 인덱스로 요소를 검색할 수 없으므로 순서대로만 엑세스 할 수 있습니다. 더 많은 요소가 있는지 여부를 나타내는 hasNext()함수가 있습습니다. 요소는 한 방향으로만 검색할 수 있습니다. (이전 요소를 검색할 방법은 없음) (hot stream) 호출 사이에서 일시중단되지만 실행 중에는 일시중단 될 수 없습니다. 그래서 일시중단 연산이 없어도 반복할 수 있습니다. 앞으로 나올 Sequence와 Iteratort는 CoroutineContext를 받지 않습니다. 기본적으로 코드를 호출한 Context와 동일한 Context에서 코드가 실행되기 때문입니다. 정보 잔출 후에만 일시중지가 가능하기 때문에 이를 위해서 yield() 혹은 gieldAll() 함수를 호출해야 합니다. val ite..

    Architecture components와 코루틴 Scope

    CoroutineScope는 모든 Coroutine을 추적하고 Coroutine이 실행되어야 하는시기를 관리하는 데 도움이됩니다. 또한 그 안에서 시작된 모든 Coroutine을 취소 할 수 있습니다. 각 비동기 작업 또는 Coroutine은 특정 CoroutineScope 내에서 실행됩니다. Architecture components는 앱의 논리적 범위에 대한 Coroutine에 대한 최고 수준의 지원을 제공합니다. Architecture components는 앱에서 사용할 수 있는 다음과 같은 기본 제공 범위를 정의합니다. 1) ViewModelScope , 2) LifecycleScope, 3) LiveData 이 3가지 기본 Coroutine Scope는 각 해당 Architecture compo..

    [코루틴 #2 동작 제어하기] - Dispatcher(문맥 지정), 작업 반복/ 취소/ 실행 보장/ 시간 만료

    Context(문맥) 코루틴은 항상 Context(컨텍스트-문맥) 안에서 실행됩니다. Context(문맥)는 코루틴이 어떻게 실행되고 동작해야 하는지를 정의할 수 있게 해주는 요소들의 그룹입니다. Context는 또한 결합이 될 수 있고, 분리하여 제거할 수도 있습니다. 코루틴의 scope는 코루틴이 실행되는 Context를 정의합니다. scope는 코루틴의 jop과 dispatchers에 대한 정보를 결합합니다. scope는 코루틴을 추적하는데, 코루틴을 시작하면 "scope에 포함"됩니다. 이는 코루틴을 추적할 scope를 지정했음을 의미합니다. 코루틴이 실행될 때 어러 가지 Context는 CoroutineContext에 의해 정의됩니다. launch{ ... }와 같이 인자가 없는 경우에는 Cor..

    [리엑티브 생산자 Publisher 3] Single & Maybe & Completable

    대량의 데이터가 아닌 최대 1건 이하만 데이터를 통지하는 생산자들 이다. Single 데이터를 1건만 통지하거나 에러를 통지한다. 데이터 통지 자체가 완료를 의미하기 때문에 완료 통지는 하지 않는다. 데이터를 1건만 통지하므로 데이터 개수를 요청할 필요가 없다. onNext( ), onComplete( )가 없으며 이 둘을 합한 onSuccess( )를 제공한다. Single의 대표적인 소비자는 SingleObserver이다. 클라이언트의 요청에 대응하는 서버의 응답이 Single을 사용하기 좋은 대표적인 예다. Single 클래스를 사용하여 현재 날짜와 시각을 통지하는 예제 create 연산자 사용 예제 /*** SingleOnSubscribe 생산자 */ Single single = Single.cr..