반응형
|
안드로이드(Android) 간단한 스레드 사용법과 숫자값 올리기 |
|
개발환경 : window 7 64bit, Eclipse Mars, Android 4.2.2 |
|
안드로이드에서 스레드 사용법에 대해서 간단한 예제로 알아봅니다. Runnable 인터페이스를 상속받아 스레드 객체를 만들고 스레드가 도는 동안 Handler 객체에 메시지를 보내 작업을 시킬 것입니다. 화면을 보시면 1초당 값이 하나씩 계속해서 증가합니다. |
소스를 설명하자면 Activity 시작 함수 onStart() 에
스레드 객체에 만들고 run() 함수를 구현하였습니다.
스레드가 동작하게 되면 run() 내부 코드가 무한
으로 실행되겠죠.
run 함수 내부에서는 Handler 객체를 통해
1초동안 멈춘뒤 메시지를 보내게 됩니다.
@Override
protected void onStart() {
super.onStart();
Thread myThread = new Thread(new Runnable() {
public void run() {
while (true) {
try {
handler.sendMessage(handler.obtainMessage());
Thread.sleep(1000);
} catch (Throwable t) {
}
}
}
});
myThread.start();
}
Run 스레드 함수에서 sendMessage 하게 되면
handleMessage 함수가 실행되며 updateThread()
수행합니다.
Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
updateThread();
}
};
updateThread() 함수에는 텍스트에 숫자를 증가하는
기능이 들어가게 됩니다. Activity 가 종료되지 않는
이상 스레드는 무한으로 돌것이므로 계속해서
증가하겠죠.
private void updateThread() {
i++;
myi.setText(String.valueOf(i));
}
간단 스레드를 구현한 메인 레이아웃 xml 입니다.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="안드로이드 스레드 예제" />
<TextView
android:id="@+id/i"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</LinearLayout>
아래는 메인 Activity 전체 소스가 되겠습니다.
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.widget.TextView;
public class SampleActivity10 extends Activity {
private int i = 0;
private TextView myi;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sample_activity10);
myi = (TextView) findViewById(R.id.i);
}
Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
updateThread();
}
};
@Override
protected void onStart() {
super.onStart();
Thread myThread = new Thread(new Runnable() {
public void run() {
while (true) {
try {
handler.sendMessage(handler.obtainMessage());
Thread.sleep(1000);
} catch (Throwable t) {
}
}
}
});
myThread.start();
}
private void updateThread() {
i++;
myi.setText(String.valueOf(i));
}
}
반응형
'안드로이드 개발' 카테고리의 다른 글
| 안드로이드(Android) ListActivity 를 이용하여 목록페이지 만들기 (1) | 2014.10.29 |
|---|---|
| 안드로이드(Android) 레이아웃에 애니메이션 기능을 이용해 시각효과 주기 (0) | 2014.10.29 |
| 안드로이드(Android) AnimationDrawable 이용하여 애니메이션 만들기 (0) | 2014.10.28 |
| 안드로이드(Android) 스레드를 이용하여 애니메이션 구현하기 (0) | 2014.10.28 |
| 안드로이드(Android) 아날로그 시계의 시간을 음성(TTS) 으로 알려주기 (3) | 2014.10.27 |
| 안드로이드(Android) 간단하게 TTS(Text-To-Speech) 구현하기 (8) | 2014.10.26 |
| 안드로이드(Android) WebView 브라우저기능중 URL 이동바 구현 (0) | 2014.10.26 |
| 안드로이드(Android) WebView 이용해 브라우저구현과 메뉴구현 (0) | 2014.10.25 |

