반응형
오늘은 함수의 실행시간을 체크하여서,
특정시간을 지나지 않으면,
그 만큼 Delay를 시키는 코드를 정리해 보겠습니다.
이런 코드는 특히 Splash화면 진행중에 하기에 용이한데요.
예를 들어 Splash를 3초정도 보여주고 싶다면,
특정 코드를 실행시키고 3초에서 남은 시간을 측정한 후,
나머지 시간만큼 Delay를 부여해 준다음 화면을 보여주기만 하면 되겠지요.
1. 함수 실행시간 측정하기
함수의 실행시간 측정은 아래와 같이 할 수 있습니다.
먼저 deleteFiles()라는 함수를 실행하였고요.
바로 직전과 실행후의 시간을 측정합니다.
시간 측정은 system.currentTimeMillis 를 활용하였습니다.
아래와 같은 코드를 이용하면,
최대 시간인 maxTimeMillis로부터,
걸린 시간(elapsedTime)과 남은 시간(remainingTime)을 알아볼 수 있습니다.
val maxTimeMillis = 3 * 1000
val startTime = System.currentTimeMillis()
deleteFiles()
val endTime = System.currentTimeMillis()
val elapsedTime = endTime - startTime
val remainingTime = maxTimeMillis - elapsedTime
2. 남은 시간만큼만 delay 하기
이제 남은 시간에 대해서는 아래와 같이 delay를 사용해주면 되겠습니다.
coroutine을 사용해야 할 텐데요.
아래 코드는 viewModel에서 사용하였으므로,
viewModelScope를 사용해주기만 하면 됩니다.
viewModelScope.launch {
val maxTimeMillis = 3 * 1000
val startTime = System.currentTimeMillis()
deleteFiles()
val endTime = System.currentTimeMillis()
val elapsedTime = endTime - startTime
val remainingTime = maxTimeMillis - elapsedTime
Log.d(TAG, "deleteFilesNotInDb() took: $elapsedTime ms")
if(remainingTime > 0) delay(remainingTime)
isResumed = true
Log.d(TAG, "isLoading: $isResumed")
}
이상으로 함수 실행 시간 측정 후 Delay 사용하는 방법에 대해서 정리해 보았습니다.
728x90
'Android 개발 > Coroutine , Flow, Channel' 카테고리의 다른 글
SharedFlow 에 대한 총정리 # Buffer Replay tryEmit Kotlin Coroutine (2) | 2023.05.04 |
---|---|
Flow 결합연산자 combine , zip , merge 비교 총정리 # Kotlin Coroutine (0) | 2023.05.03 |
onEach vs onStart 비교 정리 # Kotlin Coroutine Flow (0) | 2023.05.03 |
Coroutine suspend 동작에 관한 좋은 예와 잘못된 예 # 비동기 (0) | 2023.04.18 |
flatMapLatest 이용해서 값이 들어오는 것을 기다리기 # Coroutine (0) | 2023.04.18 |
MutableStateFlow 이용한 로딩 후 로딩 완료 기다리기 구현 방법 (0) | 2023.04.08 |
StateFlow 정리 # Android Kotlin Coroutine getStateFlow StateIn (0) | 2022.10.12 |
Kotlin Coroutine Flow 총정리 part3 # launchIn (0) | 2022.10.10 |
Kotlin Coroutine 총정리 part2 # Cancellation Exception Handling (0) | 2022.10.09 |
Kotlin Coroutine 총정리 part1 # launch async Context Job CoroutineScope (2) | 2022.10.07 |
댓글