본문 바로가기

Coroutine3

운동일지 App 문제 해결 #01 문제1. 백그라운드로 처음 갔을 때 알림이 바로 생성되지 않고 두번 정도 가야 생성이 되는 문제 문제2. 타이머를 일시 정지 시켰을 때 알림은 계속 시간이 가는 문제 문제1. 해결 서비스를 수명주기가 ON_STOP 될 때 실행했었는데, 시작 버튼을 눌렀을 때 서비스가 실행되도록 하였다. 문제 해결 이전 코드 @OnLifecycleEvent(Lifecycle.Event.ON_STOP) fun onAppBackgrounded() { val startIntent = Intent(requireActivity(), ForegroundService::class.java) startIntent.putExtra(COMMAND_ID, COMMAND_START) startIntent.putExtra(STARTED_TIME.. 2022. 2. 17.
[Kotlin] Coroutine을 이용한 간단한 타이머 1. 시작 버튼을 클릭했을 때, System의 현재 시간을 StartTime 변수에 저장하고 인수로 시작 시간을 주어, Timer를 시작시킨다. 2. Coroutine Scope 안에서 while문을 실행시켜 System의 시간을 Delay를 이용 계속 갱신한다. 이때 화면에 표시될 시간은 Scope 안에서 [ 갱신된 System의 시간 - 인수로 전달된 시간 ]이 될 것이다. 3. 이미 시작이 된 경우, 중지 또는 타이머를 재개시킨다. 이때, 재개시키는 경우의 시간은 중지가 된 시점부터, System의 시간을 뺀 값이다. 그 후, Timer에게 재개 시간을 인수로 주어, Timer를 다시 시작한다. private var isStart = false private var startTime = 0L pri.. 2022. 2. 16.
[Kotlin] Coroutines (코루틴) 코루틴이란? 비동기적으로 실행되는 코드를 간소화하기 위해 Android에서 사용할 수 있는 동시 실행 설계 패턴이다. 코루틴을 사용할 때의 이점 기본 스레드를 차단하여 앱이 응답하지 않게 만들 수도 있는 장기 실행 작업을 관리하는 데 수월하다. 코루틴을 사용하면 세부적인 제어를 통해 스레드를 전달할 수 있다. withContext()를 사용하면 콜백을 도입하지 않고도 코드 줄의 스레드 풀을 제어할 수 있으므로 데이터베이스에서 읽기, 네트워크 요청 실행과 같은 매우 작은 함수에 이를 적용할 수 있다. 코루틴 기능 4가지 경량: 코루틴을 실행 중인 스레드를 차단하지 않는 정지를 지원하므로 단일 스레드에서 많은 코루틴을 실행할 수 있습니다. 정지는 많은 동시 작업을 지원하면서도 차단보다 메모리를 절약합니다. .. 2022. 2. 1.