본문 바로가기

Language

(29)
[Kotlin] 코루틴 #5 - Channel (채널) 코루틴 #5 - Channel (채널) 값의 흐름을 전송하는 Channel(채널)에 대해 작성 Coroutine 이전 글 코루틴 #1 - 기본 코루틴 #2 - CoroutineContext와 CoroutineScope란? 코루틴 #3 - suspend Function (중단함수) 코루틴 #4 - CoroutineBuilder와 ScopeBuilder Channel (채널) Channel은 송신자(SendChannel)와 수신자(RecevieChannel) 사이의 통신을 위한 비차단 요소 Java의 BlockingQueue와 유사하지만 중요한 차이점은 BlockingQueue - put(), take() 차단(Blocking)해서 전송 / 수신하는 방법 Channel - send(), receive() 차..
[Kotlin] 코루틴 #4 - CoroutineBuilder와 ScopeBuilder 코루틴 #4 - CoroutineBuilder와 ScopeBuilder Coroutine Scope를 생성하는 Coroutine Builder에 대한 설명 (코루틴 빌더 = 스코프 빌더 같은 의미) launch / async / withContext / runBlocking / actor / produce Coroutine 이전 글 코루틴 #1 - 기본 코루틴 #2 - CoroutineContext와 CoroutineScope란? 코루틴 #3 - suspend Function (중단함수) Scope Scope는 코루틴이 실행되는 범위 GlobalScope는 Application이 종료될 때 까지 존재하는 코루틴 (Activity가 종료되어도 존재하는 코루틴이므로 구분해서 사용해야 함) CoroutineB..
[Kotlin] 코루틴 #3 - suspend Function (중단함수) 코루틴 #3 - suspend Function (중단함수) 중단 함수(Suspending Function) 와 일반 함수(Sequential function) Coroutine 이전 글 코루틴 #1 - 기본 코루틴 #2 - CoroutineContext와 CoroutineScope란? 기본 순차 실행 (Sequential by Default) 기본적으로 Code & Function은 순차적(Sequential)으로 수행 이런 개념은 Coroutine 내부에서도 동일하게 적용됩니다 일정시간 delay 후 Integer 값을 반환하는 두개의 suspend(중단) 함수 생성 suspend fun testOne(): Int { delay(1000)// 1초 대기 return 20// 20 반환 } suspend..
[Kotlin] 코루틴 #2 - CoroutineContext와 CoroutineScope란? 코루틴 #2 - CoroutineContext와 CoroutineScope란? CoroutineContext와 CoroutineScope란 무엇인가? Coroutine 이전 글 코루틴 #1 - 기본 CoroutineContext Coroutine(코루틴)을 어떻게 처리할 것인지에 대한 여러가지 정보(Element)를 포함 -> Element의 집합 CoroutineContext는 Interface로, 코루틴에 대한 설정 요소(Element)를 등록하고 Scope의 속성이 된다 CoroutineContext는 interface인데, 그 구성을 한번 살펴보기 위해 CoroutineContext.kt파일에서 가져왔습니다. public interface CoroutineContext { /** * Returns..
[Kotlin] 코루틴 #1 - 기본 코루틴 #1 - 기본 Kotlin Coroutine 공식문서 바로가기 Coroutines Overview - Kotlin Programming Language kotlinlang.org 코루틴 Coroutine? Coroutine은 Thread / AsyncTask / Rx Background 작업을 대신할 수 있는 Asynchronous/Non-Blocking Programming 제공하는 경량스레드(Light-Weight Threads) Background Task가 필요한 대표적인 경우 1. 네트워크 Request (Retrofit, OkHttp3, UrlConnection 등) 2. 내부 DB 접근 (Room, SQLite 등) Coroutine - Thread 차이점 둘 모두 Background..
[Kotlin] 기본 스톱워치 - 'timer / runOnUiThread()' Kotlin, 스톱워치 구현하기 timer 와 runOnUiThread()를 사용해서 스톱워치 구현 둥근모양의 버튼은 FloatingActionButton 사용 [ Github, 깃허브 전체소스 ] posth2071/StopWatch_Kotlin Contribute to posth2071/StopWatch_Kotlin development by creating an account on GitHub. github.com timer 코틀린에서 기본으로 제공하는 타이머(timer) 기능 timer는 UI스레드(메인)가 아닌 백그라운드 스레드(워커 스레드)에서 동작하는 기능이므로 기본적으로 UI 조작이 불가능 백그라운드 스레드에서 UI조작을 위한 방법에는 Handler를 호출 및 runOnUiThread() 함..
[Kotlin] Anko 라이브러리 사용하기 Kotlin, Anko(앤코) 라이브러리 Anko 라이브러리 코틀린 개발한 JetBrains에서 만든 라이브러리(Library), 기본 코드작성을 편리하게 도와주는 기능 4가지의 라이브러리로 구성 Anko Commons : 인텐트, 다이얼로그, 로그 등을 편리하게 사용하는 라이브러리 Anko Layouts : 안드로이드 레이아f9f2f4웃을 코드로 쉽게 작성하는 라이브러리 Anko SQLite : SQLite를 쉽게 사용하는 라이브러리 Anko Coroutines : 코루틴을 쉽게 사용하는 라이브러리 Anko 라이브러리의 설정 방법 등 사용 방법 참고 Gradle '의존성 추가' build.gradle(Module: app) 파일에서 dependencies (의존성 추가) : implementation ..
[Kotlin] Scope 함수 - 'run, with, apply, let, also' Kotlin - Scope(스코프)함수 정리 코틀린에서 제공하는 여러 함수 중에서 기본적인 Scope(스코프) 함수 5종에 대한 정리 종합 정리 먼저보기 apply / also 두 함수 모두, 인스턴스(객체)를 리시버 객체로 전달, 반환 값으로 인스턴스(객체)를 반환 apply()는 참조연산자(it) 사용x, 직접적인 접근 name="", age=1 등 also()는 참조연산자(it) 사용, 사용하지 않으면 접근불가 it.name"", it.age=1 등 run / let 두 함수 모두, 인스턴스(객체)를 리시버 객체로 전달, 반환 값으로 결과 값(마지막 라인) 반환 run()는 참조연산자(it) 사용x, 직접적인 접근 name="", age=1 등 let()는 참조연산자(it) 사용, 사용하지 않으면 ..