Android/Thread, Handler 2

Android Thread with Handler example

Soul-Learner 2012. 7. 2. 11:52

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

ImageView에 이미지를 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" > <ImageView android:id="@+id/imageView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:ems="10" > <requestFocus /> </ImageView> </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 { ImageView imageView1; int imgID; boolean isRunning; Handler handler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); if(imgID==R.drawable.ic_launcher) imgID=R.drawable.mountain; else imgID = R.drawable.ic_launcher; imageView1.setImageResource(imgID); } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); imageView1 = (ImageView) this.findViewById(R.id.imageView1); } @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; } }