비동기처리

https://seyoungcho2.github.io/CoroutinesKoreanTranslation/undefined-1.html 일시중단 함수 구성하기 · GitBook이 섹션은 일시 중단 함수를 구성하기 위한 다양한 접근 방식을 다룬다. 일종의 원격 서비스 호출이나 계산 같은 두 유용한 일시 중단 함수들이 서로 다른 위치에 정의되어 있다고 가정해보자.seyoungcho2.github.io- 위 문서를 참고하여 작성했습니다.기본적인 순차 처리- 아래와 같은 코드를 실행하면 기본 순차적 실행으로 인해 42가 반환된다.suspend fun doSomethingUsefulOne(): Int { delay(1000L) // 여기서 유용한 작업을 실행한다고 가정한다. return 13}suspen..
Coroutine 실행 취소- launch를 통해 반환되는 job의 cancel로 코루틴의 실행을 취소할 수 있다.fun main() = runBlocking { val job = launch { repeat(1000) { i -> println("job: I'm sleeping $i ...") delay(500L) } } delay(1300L) // 약간의 시간 동안 delay 한다. println("main: I'm tired of waiting!") job.cancel() // Job을 cancel한다. job.join() // Job의 실행이 완료될 때까지 기다린다. println("main: ..
Coroutine이란?- Coroutine은 일시정지 연산을 위한 인스턴스이다. 이것은 코드의 나머지 부분들과 동시에 실행되는 코드 블록을 가진다는 점에서 스레드와 개념적으로 비슷하다. 하지만, 코루틴은 특정한 스레드에 종속되어 실행되지 않으며, 하나의 스레드에서 일시정지(suspend) 되었다가 다른 스레드에서 재개(resume)될 수 있다. - 일반적인 스레드와 달리 코루틴은 작은 비용으로 생성되고, 필요할 때만 작업을 실행하거나 중단할 수 있기 때문에, 리소스 효율성이 매우 뛰어나다. - 코루틴의 장점으로는 간결한 문법과 취소, 중단, 시간 초과에 대한 제어가 유연하다. Coroutine 핵심 구성 요소- 중단 가능한 suspend 함수 : Coroutine 안에서만 호출 가능suspend fun ..
- 해당 문서와 번역본을 참고했습니다.https://kotlinlang.org/docs/composing-suspending-functions.html#sequential-by-default Composing suspending functions | Kotlin kotlinlang.orghttps://seyoungcho2.github.io/CoroutinesKoreanTranslation/undefined-1.html 일시중단 함수 구성하기 · GitBook이 섹션은 일시 중단 함수를 구성하기 위한 다양한 접근 방식을 다룬다. 일종의 원격 서비스 호출이나 계산 같은 두 유용한 일시 중단 함수들이 서로 다른 위치에 정의되어 있다고 가정해보자.seyoungcho2.github.io- 간혹, 서비스를 구성하면..
사용자에게 좀 더 신속한 데이터 갱신 처리를 제공하기 위해 백그라운드 동기화 처리를 구현하기로 했다. Jetpack에서 지원하는 WorkManager를 사용해 보기로 했다. 먼저 build.gradle에 다음 설정을 추가해준다. implementation "androidx.work:work-runtime-ktx:2.8.1" 그리고 작업 정의를 위한 Worker 클래스를 생성한다. class SyncWorker(val context: Context, params: WorkerParameters) : Worker(context, params) { override fun doWork(): Result { syncAndCallApi() return Result.success() } } doWork 내에서 비동기..
Android에서 비동기 처리를 위해 많이 사용되던 AsyncTask가 deprecated 되었는데, 프로젝트에 아직도 사용되는 부분들이 존재하여 Coroutine을 활용하여 비동기 처리하도록 수정을 진행했다. public class CheckApiTask extends AsyncTask { @Override protected void onPreExecute() { super.onPreExecute(); //Task 실행 전 UI 작업 } @Override protected Boolean doInBackground(String[] params) { try { //Background 작업 } catch (Exception e) { e.printStackTrace(); } return false; } @Ov..