티스토리 뷰
개인적으로 이해한 간단한 정리
UI를 건드리지 않는 시간 걸리는 작업
Thread 이용
시간 걸리는 작업 상태를 받아서 무엇인가 보여주고(UI로 나타내고) 싶을때
Handler 이용
Thread 는 아래와 같이 코딩
Handler는 아래와 같이 코딩
UI를 건드리지 않는 시간 걸리는 작업
Thread 이용
new Thered { run() { 백그라운드에서 할일; } }
시간 걸리는 작업 상태를 받아서 무엇인가 보여주고(UI로 나타내고) 싶을때
Handler 이용
Handler myHandler = new Handler() { public void handleMessage( Message msg ) { msg 전달받아 조건에 따라 작업; } } new Thered { run() { 백그라운드에서 할일 ...; myHandler.sendMessage(전달할 msg); } }
Thread 는 아래와 같이 코딩
new Thread(new Runnable() { public void run() { progress01.setProgress( 0 ); progress01.setMax( 100 ); for ( int i = 0; i <= 100; ++i ) { progress01.setProgress( i ); SystemClock.sleep(100); } //Toast.makeText(MyThread.this, "Thread Finished", Toast.LENGTH_SHORT).show(); } }).start();Thread 코딩의 다른 표현 예
// 새로운 스래드와 내부에서 실행될 Logic을 Runnable로 객체화 함. Runnable increaseProgress = new Runnable() { // Runnable interface의 유일한 abstract method 구현. // run() 메소드는 본 Runnable객체가 공급된 Thread가 시작할때 자동으로 호출. public void run() { for(nProgress = 0; nProgress<=100; nProgress+=10) { try { bar.setProgress(nProgress); } catch(Exception e) { Log.w("h-exception", e.toString()); } SystemClock.sleep(600); } } }; // 위에 선언한 Runnable객체에 구현된 logic을 실행할 새로운 Thread 객체 생성 Thread worker = new Thread(increaseProgress); // 새로운 스레드 시작됨 -> Runnable interface의 run()메소드가 // 새로운 스레드에서 실행됨. worker.start();
Handler는 아래와 같이 코딩
Handler myHandler = new Handler() { public void handleMessage( Message msg ) { if ( msg.what == -1 ) { progress01.setProgress( 0 ); progress01.setMax( 100 ); } else if ( msg.what == -100 ) { Log.i( "INFO", "Finish Thread!!!" ); Toast.makeText(MyThread.this, "Finish Thread!!!", Toast.LENGTH_SHORT).show(); } else { progress01.setProgress( msg.what ); } } }; public void onClick( View v ) { if ( v == btn01 ) { new Thread(new Runnable() { public void run() { Message msg = myHandler.obtainMessage(); msg.what = -1; myHandler.sendMessage( msg ); for ( int i = 0; i <= 100; ++i ) { msg = myHandler.obtainMessage(); msg.what = i; myHandler.sendMessage( msg ); SystemClock.sleep(100); } msg = myHandler.obtainMessage(); msg.what = -100; myHandler.sendMessage( msg ); } } ).start(); } }
'모바일 > Android' 카테고리의 다른 글
android sdk manager 업데이트 시도중 failed to install (0) | 2011.12.20 |
---|---|
안드로이드 JSON 파싱 (0) | 2011.11.27 |
Android에서 XML을 처리 (0) | 2011.11.11 |
[앱-게임] 데스티니아 (0) | 2011.11.07 |
에픽하츠 설치 요구사항 (0) | 2011.11.01 |
댓글
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- laravel
- classic asp
- ASP
- 워드프레스
- iis
- Mac
- IE
- macos
- IOS
- Android
- Linux
- iphone
- PHP
- Docker
- Wordpress
- JSON
- CSS
- Debug
- Prototype
- git
- 한글
- javascript
- mssql
- JQuery
- sencha touch
- centos
- nginx
- nodejs
- API
- 안드로이드
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함