반응형
Notice
Recent Posts
Recent Comments
Link
불로구
안드로이드 스튜디오 - 코틀린 쓰레드 & runOnUiThread 본문
반응형
쓰레드란?
- 프로세스 내에서 실제로 작업을 수행하는 주체
- 모든 프로세스는 하나 이상의 쓰레드를 가지고 있다.
- 두개 이상의 스레드를 멀티 쓰레드라고 한다.
- 안드로이드에는 MainThread와 다른 Thread가 있다.
- MainThread는 한번에 하나만 가능하며, 앱이 끝날때까지 정지 불가 -> 정지 시 crash 발생
- 다른 Thread는 한번에 여러가지 일을 할 수 있다.
runOnUiThread 란
- 현재 쓰레드가 UI 쓰레드라면 UI 자원을 사용하는 행동에 대해 즉시 실행
- 현재 쓰레드가 UI 쓰레드가 아니라면 UI 쓰레드의 자원 사용 이벤트 큐에 들어감
쓰레드 사용법
버튼을 눌렸을 때 스레드 시작
val runnable: Runnable = object : Runnable {
override fun run() {
while (cnt < 100) {
Log.d("Thread-1", "${cnt++}")
}
}
}
val thread: Thread = Thread(runnable)
Thread_Button.setOnClickListener {
thread.start()
}
Thread(object : Runnable {
override fun run() {
while (cnt2 < 100) {
Log.d("Thread-2", "${cnt2++}")
}
}
}).start()
Thread(Runnable {
while (cnt3 < 100) {
Log.d("Thread-3", "${cnt3++}")
Thread.sleep(2000)
runOnUiThread {
if (cnt3 % 2 == 0) {
back.setBackgroundColor(R.color.white)
} else {
back.setBackgroundColor(R.color.black)
}
}
}
}).start()
3번째는 람다식을 사용하여 쓰레드를 만들었으며, UI의 변경을 위해 runOnUiThread를 사용했다.
반응형
'프로그래밍 > 코틀린 안드로이드' 카테고리의 다른 글
안드로이드 스튜디오 - dataBinding (0) | 2021.04.22 |
---|---|
안드로이드 스튜디오 - Activity 와 Fragment간 데이터 주고 받기 (0) | 2021.04.21 |
코틀린 MVP패턴 아키텍쳐 (1) - 이론 (0) | 2021.04.20 |
안드로이드 스튜디오 - Firebase를 이용한 푸시알람 (수정대기) (0) | 2021.04.18 |
안드로이드 스튜디오 - Fragment에서 Activity로 데이터 전송 (0) | 2021.04.13 |
Comments