Notice
Recent Posts
Recent Comments
Link
투케이2K
350. (android/kotlin) [간단 소스] Handler(Looper.getMainLooper()) 핸들러 메인 루퍼 사용해 UI 로직 처리 실시 본문
Android
350. (android/kotlin) [간단 소스] Handler(Looper.getMainLooper()) 핸들러 메인 루퍼 사용해 UI 로직 처리 실시
투케이2K 2022. 10. 5. 11:49[개발 환경 설정]
개발 툴 : AndroidStudio
개발 언어 : kotlin
[소스 코드]
// TODO [테스트 메소드 정의 실시]
fun testMain(){
Log.i("---","---")
Log.d("//===========//","================================================")
Log.i("","\n"+"[Test_Kotlin > testMain() 메소드 : 테스트 함수 동작 실시]")
Log.d("//===========//","================================================")
Log.i("---","---")
/**
* ------------------------------------
* TODO [요약 설명]
* ------------------------------------
* 1. Looper : 액티비티가 실행 됨과 동시에 돌고 있는 스레드입니다.
* ------------------------------------
* 2. Looper 는 상시로 작업 대기를 수행하며, [큐] 에 메시지가 입력되면 해당 메시지에 맞는 로직을 수행합니다
* ------------------------------------
* 3. getMainLooper : Main Thread (UI Thread) 가 사용하는 루퍼를 반환합니다. (UI 작업은 메인 스레드에서 수행)
* ------------------------------------
* 4. sendEmptyMessage : 메시지 타입 지정 및 핸들러에게 메시지를 전달합니다
* ------------------------------------
* 5. postDelayed : 일정 시간 후 작업을 수행합니다
* ------------------------------------
* */
// [로직 처리 실시]
try{
// ------------------------------------
// [핸들러 메시지 전달 실시]
mHandler.sendEmptyMessage(1)
// [핸들러 사용 해제]
//mHandler.removeMessages(1)
// ------------------------------------
// ------------------------------------
// [postDelayed 사용해 작업 예약 수행 실시]
Handler(Looper.getMainLooper()).postDelayed({ //TODO 재사용 방식
Log.i("---","---")
Log.w("//===========//","================================================")
Log.i("","\n"+"[Test_Kotlin > testMain() 메소드 : 핸들러 postDelayed 작업 처리 실시]")
Log.w("//===========//","================================================")
Log.i("---","---")
// [추가 로직 처리 실시]
},2000)
// ------------------------------------
}
catch(e : Exception){
Log.i("---","---")
Log.e("//===========//","================================================")
Log.i("","\n"+"[Test_Kotlin > testMain() 메소드 : 에러 상황 발생]")
Log.i("","\n"+"[error : "+e.message+"]")
Log.e("//===========//","================================================")
Log.i("---","---")
}
}
// TODO [UI 동작을 수행하기 위해 handler + getMainLooper 정의 실시]
private val mHandler = object : Handler(Looper.getMainLooper()) {
override fun handleMessage(msg: Message) {
Log.i("---","---")
Log.w("//===========//","================================================")
Log.i("","\n"+"[Test_Kotlin > mHandler() 메소드 : 핸들러 UI 작업 처리 수행]")
Log.i("","\n"+"[msg : "+msg.what+"]")
Log.w("//===========//","================================================")
Log.i("---","---")
// TODO [로직 처리 수행 실시]
display_textview.setText("mHandler runnig")
}
}
반응형
'Android' 카테고리의 다른 글
Comments