안드로이드/Thread
Handler를 이용한 반복 작업
김어찐
2022. 6. 16. 00:30
728x90
Main Thread에서 반복
Main Thread에서 처리하는 코드(Activity내의 코드) 중에 일정 작업을 계속 반복 처리해야할 경우가 있다.
이 때, while문을 이용하여 무한루프를 운영하면 Main Thread가 종료되지 않아 화면 처리를 할 수 없다.
이러한 문제를 해결하기 위해 다양한 방법을 제공하고 있다.
Handler
Handler는 개발자가 안드로이드 OS에게 작업 수행을 요청하는 역할을 한다.
개발자가 작업을 요청하면 안드로이드 OS는 작업을 하지 않을 때 개발자가 요청한 작업을 처리하게 된다.
이 처리는 Main Thread 에서 처리한다.
5초 이상 걸리는 작업은 피하는 것이 좋다.
화면 처리도 가능하다.
package com.example.handler
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.os.Handler
import android.os.Looper
import android.os.SystemClock
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
button.setOnClickListener {
val now = System.currentTimeMillis()
textView.text = "버튼 클릭 : $now"
}
val handler = Handler(Looper.myLooper()!!)
// 처리 한번에 대한 작업을 구현해준다.
val thread1 = object : Thread() {
override fun run() {
super.run()
val now2 = System.currentTimeMillis()
textView2.text = "handler : $now2"
// handler.post(this)
handler.postDelayed(this,100)
}
}
// handler.post(thread1)
handler.postDelayed(thread1,100)
}
}
728x90