티스토리 뷰
개인적으로 이해한 간단한 정리
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
- iphone
- Docker
- classic asp
- JQuery
- centos
- Mac
- sencha touch
- macos
- IOS
- Android
- Linux
- Debug
- Prototype
- 워드프레스
- laravel
- JSON
- PHP
- ASP
- CSS
- 한글
- 안드로이드
- nginx
- iis
- git
- Wordpress
- API
- nodejs
- mssql
- IE
- javascript
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
글 보관함