일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- AWS
- 플라스크
- 안드로이드
- flask
- 서버리스
- 보안
- IOT Core
- dynamodb
- 충전기
- 펌웨어
- raspberry
- 라즈베리파이
- 에버온
- 완속충전기
- homeassistant
- 디자인패턴
- 급속충전기
- 전기차
- 전기차충전기
- Android
- thread
- 전기차충전
- OCPP
- lambda
- STM32
- 홈어시스턴트
- everon
- 파이썬
- esp8266
- YMODEM
Archives
- Today
- Total
Louie NRT Story
[안드로이드] Handler 본문
반응형
작성일: 21년 11월 23일
Index
1. handler 생성하기
2. Log 확인하기
1. handler 생성하기
- Start 버튼을 누르면 Thread가 동작됨
- Thread는 1초 간격으로 Handler에게 데이터를 전달함
- handler는 받은 데이터를 이용하여 처리함
private static final int SEND_MSG_01 = 1;
private static final int SEND_MSG_02 = 2;
ThreadTest01 t1 = new ThreadTest01("NameThreadTest01");
MyHandler myHandler = new MyHandler();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
OnClickListener m_onClickListener = new OnClickListener() ;
Button btn_01 = (Button)findViewById(R.id.start);
btn_01.setOnClickListener(m_onClickListener);
Button btn_02 = (Button)findViewById(R.id.stop);
btn_02.setOnClickListener(m_onClickListener);
}
private class OnClickListener implements View.OnClickListener {
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.start:
Log.d("OnClickListener", "Press Button");
if (!(t1.isAlive())) {
Log.d("OnClickListener", "Thread Start");
t1 = new ThreadTest01("NameThreadTest01");
t1.start();
}
break;
case R.id.stop:
Log.d("OnClickListener", "Press Button2");
Log.d("OnClickListener", "Thread Stop");
t1.interrupt();
break;
}
}
}
private static class MyHandler extends Handler {
@Override
public void handleMessage(Message msg){
switch (msg.what){
case SEND_MSG_01:
Log.d("handleMessage()", "SEND_MSG_01 -> arg: " + msg.arg1);
Log.d("handleMessage()", "SEND_MSG_01 -> obj: " + msg.obj);
break;
case SEND_MSG_02:
Log.d("handleMessage()", "SEND_MSG_02 -> arg: " + msg.arg1);
Log.d("handleMessage()", "SEND_MSG_01 -> obj: " + msg.obj);
break;
default:
Log.d("handleMessage()", "default -> arg: " + msg.arg1);
Log.d("handleMessage()", "default -> obj: " + msg.obj);
break;
}
}
}
public class ThreadTest01 extends Thread{
public ThreadTest01(String thread_name){
setName(thread_name);
}
@Override
public void run() {
super.run();
try{
while(!isInterrupted()) {
Log.d("Thread", getName() + " Thread is Running");
Message message = myHandler.obtainMessage();
message.what = SEND_MSG_01;
message.arg1 = 1;
String information = new String("Thread 동작 중입니다.");
message.obj = information;
myHandler.sendMessage(message);
Thread.sleep(1000);
}
} catch (InterruptedException e) {
Log.e("Thread", getName() + " Thread Interrupted");
} finally {
Message message = myHandler.obtainMessage();
message.what = SEND_MSG_02;
message.arg1 = 2;
String information = new String("Thread 종료 중입니다.");
message.obj = information;
myHandler.sendMessage(message);
Log.d("Thread", getName() + " Thread is Stop");
}
}
}
2. Log 확인하기
- Start 버튼을 누르면 handler에서 Message의 What 데이터를 이용하여 arg1과 obj 데이터를 처리함
- Stop 버튼을 누르면 handler에서 Message의 What 데이터를 이용하여 arg1과 obj 데이터를 처리함
- 즉 데이터를 받으면 handler에 던져서 그곳에서 message에 arg1과 obj 데이터를 핸들러에서 처리하도록 함
- Thread간의 데이터를 주고 받을때 사용함
- 일반적으로 Handler는 데이터를 보고 처리해야하는 곳에 전달하는 전달자 역할을 함
반응형
'전기차충전기' 카테고리의 다른 글
[안드로이드] runOnUiThread() (0) | 2021.11.23 |
---|---|
[안드로이드] Thread와 Runnable (0) | 2021.11.23 |
[안드로이드] Thread 생성하기 (0) | 2021.11.23 |
[안드로이드] Dialog 띄우기 - Todo (0) | 2021.11.04 |
[안드로이드] 비정상 종료 처리하기 - Todo (0) | 2021.11.03 |
Comments