본문 바로가기

Android/Thread, Handler

Android Thread with Handler example

Android 에서 개발자 정의 백그라운드 Thread와 Handler 클래스를 사용하는 예

EditText에 숫자를 1초에 한번씩 증가하여 출력하는 내용

main.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:background="#FF4444CC" > <EditText android:id="@+id/editText1" android:layout_width="match_parent" android:layout_height="wrap_content" android:ems="10" > <requestFocus /> </EditText> </LinearLayout>


ThreadDemo.java

package my.android.test; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.widget.EditText; public class ThreadDemo extends Activity { EditText editText1; int num; boolean isRunning; Handler handler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); editText1.setText(++num +""); } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); editText1 = (EditText) this.findViewById(R.id.editText1); } @Override protected void onStart() { super.onStart(); isRunning = true; new Thread(new Runnable() { @Override public void run() { for(int i=0;i<10 && isRunning;i++) { try { Thread.sleep(1000); handler.sendMessage(handler.obtainMessage()); } catch (InterruptedException e) { e.printStackTrace(); } } } }).start(); } @Override protected void onStop() { super.onStop(); isRunning = false; } }