[Kotlin]Handler 이용하여 메인 UI 건드리기
(메인 쓰레드 제어하기)
Timer등을 설정해서 로직을 돌리다보면 이벤트에 따라 UI가 변경되어야하는 경우가 있습니다.
쉽게말해 UI를 건드리기 위해 서브쓰레드에서 메인쓰레드를 제어한다는건데, 여기서는 Timer를 실행했을때를 예시로 들겠습니다.
- Timer를 통해 i를 증가시키기
private fun timerTest() {
var i = 0
myTimer = timer(period = 1000) {
i++
handlerTest(i)
}
}
> 위처럼 타이머를 설정하여 1초(period=1000)마다 i를 증가시킨다는 예시를 들겠습니다.
- Handler를 생성하여 UI를 바꿔주기
private fun handlerTest(msg:Int) {
val handler : Handler = object : Handler(Looper.getMainLooper()) {
override fun handleMessage(inputMessage: Message) {
timer_text.setText(msg)
}
}
handler.obtainMessage().sendToTarget()
}
> timerTest 함수에서는 i를 증가시켜 handlerTest 함수에 해당 i값을 매개변수로 넘겨주어 메인쓰레드(UI)를 제어하는 형식입니다.
> 위 함수에서는 timer_text(TextView)에 1씩 증가시켜 UI단에서 보이게 해줍니다.
*** Reference : https://developer.android.com/reference/android/os/Handler?hl=en
*** 소스에 문제가 있을 시 댓글달아주시면 최신화하도록 하겠습니다. 감사합니다.
'컴퓨터 이야기 > Android' 카테고리의 다른 글
[Java]안드로이드 권한요청 class (0) | 2020.06.12 |
---|---|
[Kotlin, JAVA]밀리세컨드 단위 시간 구하기 (0) | 2020.04.27 |
[Kotlin]Toast 사용하기 (0) | 2020.04.23 |
[Kotlin]Activity 전체화면 처리 (0) | 2020.04.23 |
[Kotlin]안드로이드 권한 요청 (6) | 2020.04.07 |