[Android] 단위 테스트와 오디오 재생

MVVM 아키텍처가 매력적인 이유 중 하나는 **단위 테스트(unit testing)**가 쉽기 때문이다. 단위 테스트는 앱의 각 단위가 제대로 작동하는지 검사하는 작은 프로그램들을 작성하는 것이다.

본문에서는 단위 테스트 및 안드로이드 오디오 API를 쉽게 사용하도록 해주는 도구인 SoundPool 클래스를 사용한다. SoundPool 클래스는 많은 음원 파일을 메모리로 로드할 수 있으며, 재생하려는 음원의 최대 개수를 언제든 제어할 수 있다. 따라서 사용자가 앱의 모든 버튼을 동시에 마구잡이로 누르더라도 앱의 실행이나 장치에는 영향을 주지 않는다.

자세히 보기

[Kotlin] Coroutine - Cancellation and Timeouts

Cancelling coroutine execution

1
2
3
4
5
6
7
8
9
10
11
12
13
fun main() = runBlocking {
val job = launch {
repeat(1000) { i ->
println("job: I'm sleeping $i ...")
delay(500L)
}
}
delay(1300L) // delay a bit
println("main: I'm tired of waiting!")
job.cancel() // cancels the job
job.join() // waits for job's completion
println("main: Now I can quit.")
}
자세히 보기

[Android] 데이터 바인딩과 MVVM

앱에 포함된 여러 음원을 사용자가 조회하고 들을 수 있는 BeatBox라는 새로운 프로젝트를 통해 데이터 바인딩 data binding 이라는 Jetpack 아키텍처 컴포넌트 라이브러리를 사용하는 방법을 배운다. 그리고 데이터 바인딩을 사용해서 MVVM(Model-View-View Model) 아키텍처를 구현하고 애셋 asset 시스템을 사용해서 음원 파일을 저장하는 방법도 알아본다.

다른 아키텍처가 왜 필요할까?

자세히 보기