반응형
안드로이드(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 |