여름방학 프로젝트 중에 백그라운드에서 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 |