여름방학 프로젝트 중에 백그라운드에서 Thread를 통해 TextView를 바꾸어 주어야 할일이 생겼다.

잊어버리기전에 적어놓자



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
32
Handler handler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            mTemperture.setText(Temperture);
            ...
        }
    };
 
    @Override
    protected void onStart() {
        super.onStart();
        Thread thread = new Thread(new Runnable() {
            @Override
            public void run() {
                while(true){
                    try {
                        handler.sendMessage(handler.obtainMessage());
                        Thread.sleep(100);
                    } catch (Throwable e) {
                        e.printStackTrace();
                    }
                }
            }
        });
        thread.setDaemon(true);
        thread.start();
        Toast.makeText(getApplication(),"START",Toast.LENGTH_SHORT).show();
    }
cs


센서값을 받아올때는 Thread를 이용하여 받아오도록하였다.

sendMessge에서 보낸 msg를 handleMessge의 msg로 받아 handleMessage에서 처리한다.


또한 handler.ontainMessage()에 메시지를 사용하여 전송하고싶다면

Message msg = handler.ontainMessage(); 를 선언하여

msg.what(int)

msg.obj(Object)

msg.arg1(int)

msg.arg2(int) 등의 메시지를 담아서 전송할수도 있다.


sendemptymessage(int what)을 사용하면 ID만 핸들러로 전송할 수있다.

그러면 핸들러에서는 if(msg.ID == 0){ }안에서 수행을 해야겠지?

 

Deamon Thread 설정 : 메인스레드가 종료되면 이 스레드도 따라 종료됨, 스레드 종속성을 설정해줌




'Programming > Android' 카테고리의 다른 글

R  (0) 2016.09.05
안드로이드의 구성요소 요약  (0) 2016.09.05
Toolbar  (0) 2016.09.03
manifest  (0) 2016.09.02
notification 고정시키기  (1) 2016.08.28

+ Recent posts