Message, Handler, obtain, Thread
출처: 슈퍼드로이드
16. Activity에 대해서 - Thread 와 Android Main Thread
http://cafe.daum.net/superdroid/aAfL/98
--------------------------------------------------------------
package com.test.ThreadTest;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.TextView;
public class A extends Activity {
static final int REQUEST_DRAW_COUNT = 1;
TextView mTextView = null;
Handler mHandler = null;
int mCount = 0;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mTextView = (TextView) findViewById(R.id.text_view);
//mHandler = new Handler(); // runnable 방식
mHandler = new Handler() // handleMessage 방식
{
public void handleMessage(Message msg) {
switch (msg.what)
{
case REQUEST_DRAW_COUNT:
mCount = msg.arg1;
mTextView.setText("Count : " + mCount);
break;
}
}
};
}
public void onClick(View v)
{
switch(v.getId())
{
case R.id.set_count_btn:
new Thread()
{
public void run()
{
/* // runnable방식
Runnable runnable = new Runnable ()
{
public void run()
{
mTextView.setText("count : " + mCount);
}
};
Message msg = Message.obtain(mHandler, runnable);
mCount = 50;
mHandler.sendMessage(msg); */
// handleMessage 방식
Message msg = Message.obtain(mHandler, REQUEST_DRAW_COUNT);
msg.arg1 = 50;
mHandler.sendMessage(msg);
}
}.start();
/* //오류
new Thread()
{
@Override
public void run()
{
mTextView.setText("Count : " + 50);
}
}.start(); */
break;
}
}
}