Kotlin_Android 앱 개발/코틀린 익히기

09. 스톱워치 앱 만들기 (부제: Thread in Android)

하다블 2024. 3. 15. 22:00
반응형

안녕하세요. 하다블입니다.

개강 이후 수업과 병행하다 보니 시간이 조금씩 더 걸리는 것 같습니다.

이번에는 스톱워치 애플리케이션을 만들어보았습니다. 

먼저 결과물을 보여드리겠습니다.

카운트다운이 맨 위에 위치해 있으며 그 아래에 10초가 지나가는 것을 보여주기 위한 Progress Bar가 있습니다. 그리고 측정하기 위해 시간이 있으며 정지 / 시작 버튼으로 구성했습니다.

시작버튼을 누르게 되면 카운트다운이 시작되며 버튼 역시 측정 버튼과 일시정지 버튼으로 바뀌게 됩니다.

물론 카운트다운의 시간은 사용자가 변경할 수 있습니다.

카운트다운이 모두 지나면 시간이 지나며, 체크 버튼을 통해 기록할 수도 있습니다.

기능자체는 단순하다고 볼 수 있지만 이번 애플리케이션 제작을 하면서 배운 것들에 대해 기록하고자 합니다.


이번 스톱워치 프로젝트에는 Thread를 이용한 작업이 들어갔습니다.

시간이 지나가는 것을 계속 실행하고 있더라도 다른 작업들에 문제가 없어야 하기 때문입니다.

지금은 시간만 측정하는 굉장히 단순한 작업이기 때문에 비중이 크지 않지만 이후 더 심화된 애플리케이션을 만들게 된다면 Thread의 비중이 더욱 커질 것이고, 컴퓨터공학에서도 Process, Thread와 같은 내용을 중요하게 다룰 만큼 기록할 필요가 있다고 느꼈습니다.

 Thread : Process에서 실행되는 실행의 흐름 단위

기본적으로 Android는 실행 Thread와 함께 새로운 Liniux Process를 만듭니다. 이 Process에서 기본적인 작업을 하며 실행되어서 보이는 화면은 모두 기본 Thread에서 진행됩니다. 

Thread가 하나라면 다른 작업을 동시에 실행하는 것이 어렵습니다. 스톱워치의 경우에도 시간이 0.1초 지나갈 때마다 텍스트를 변경해주어야 하며 화면에 보여줌과 동시에 다른 함수들의 실행이 정상적으로 이루어져야 합니다.

그렇기 때문에 이번 프로젝트에도 2가지의 Thread 작업이 들어갔습니다.

하나는 Timer이고 다른 하나는 runOnUiThread입니다. Timer는 기본적으로 Thread를 내장하고 있는 함수입니다.

Thread는 기존 작업을 유지하면서도 다른 작업을 실행할 수 있는 매력적인 모습으로 보일 수도 있지만 그렇다고 무작정 많이 만들 수는 없습니다. CPU에게 줄 수 있는 작업의 양을 지켜주어야 하며 프로그래머가 작업의 우선순위를 매겨서 어떤 작업 위주로 실행할 것인지를 설계해야 합니다.

더 노력하는 사람이 되겠습니다.

감사합니다.

반응형