일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Algorithm
- AppBarLayout
- notification
- onLayout
- ViewModel
- BOJ
- Behavior
- Android
- kotlin
- Coroutine
- Navigation
- LiveData
- onMeasure
- HTTP
- 코틀린
- hilt
- CustomView
- sqlite
- 알고리즘
- CollapsingToolbarLayout
- activity
- 백준
- 안드로이드
- 알림
- View
- CoordinatorLayout
- lifecycle
- DataBinding
- recyclerview
- room
- Today
- Total
목록코루틴 (4)
개발일지
ViewModelScope ViewModel마다 존재하는 Scope이다. ViewModel이 삭제되면 자동으로 취소된다. class ExampleViewModel : ViewModel() { init { viewModelScope.launch { /* ViewModel이 사라지면 종료된다. */ } } } LifeCycleScope LifeCycle 객체마다 존재하는 Scope이다. Create, Start, Resume 3가지의 Mode를 지원하고 Active상태(화면에 보이는 상태)일 때만 수행된다. class CoroutineFragment : BaseFragment(R.layout.fragment_coroutine) { private var count = 0 private val logList b..
cancel() Job을 취소시키는 함수, Job이 취소되었을 때 suspend 함수를 호출하면 JobCancellationException을 발생시킨다. fun main() = runBlocking { val job = launch { repeat(5) { try { delay(1000L) println("Job Run Index($it)") } catch (e: Exception) { e.printStackTrace() } } } delay(3000L) job.cancel() job.join() } Job Run Index(0) Job Run Index(1) kotlinx.coroutines.JobCancellationException: StandaloneCoroutine was cancelled; ..
코루틴 빌더 runBlocking { } -> 해당 코루틴이 끝날 때 까지 Blocking한다. fun main() { // delay(1000L)가 실행되는 동안 main함수가 끝나고 println을 만나지 못하고 종료 GlobalScope.launch { delay(1000L) println("Pass") } } Process finished with exit code 0 fun main() { GlobalScope.launch { delay(1000L) println("Pass") } runBlocking { // delay(2000L)이 끝날 때 까지 Blocking 된다. delay(2000L) } } Pass Process finished with exit code 0 launch { } ->..
Gradle 설정 dependencies { implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.7") } Thread vs Coroutine Thread와 Coroutine은 동시성을 보장하기 위한 기술이다. Thread Preempting Scheduling 자원을 서로 차지하려고 노력하고 OS가 Context Switching을 통해 Thread에게 자원을 할당한다 -> Overhead발생 Thread자체 Stack메모리를 가지고 JVM Stack을 차지한다. Coroutine Cooperatively 처리 단위가 Thread가 아닌 Coroutine에서 제공하는 Job Object단위로 하나에 Thread에서 진행된다. Thread..