Skip to content

Instantly share code, notes, and snippets.

@wicksome
Last active August 29, 2015 14:05
Show Gist options
  • Save wicksome/c035b7cc16158d93c982 to your computer and use it in GitHub Desktop.
Save wicksome/c035b7cc16158d93c982 to your computer and use it in GitHub Desktop.
분리된 클래스
public class ThreadHandlerTest extends Activity {
TextView tvTest;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
tvTest = (TextView) findViewById(R.id.tv_test);
BackThread thread = new BackThread();
thread.setDaemon(true); // 메인스레드와 같이 종료하기 위해서
thread.start();
}
Handler mHandler = new Handler() {
public void handleMessage(Message msg) {
if(msg.what == 0) {
tvTest.setText(msg.arg1 + "");
}
}
}
}
class BackThread extends Thread {
int val = 0;
Handler mHandler;
BackThread(Handler handler) {
mHandler = handler;
}
public void run() {
while(true) {
val++;
// 매번 Message 객체를 생성하면 비효율적이기 때문에 안드로이드는 시스템에 메시지 풀을 두오 캐시를 유지한다.
// 메시지 풀에서 메시지 객체를 꺼낼때 obtain() 메서드를 통해 비슷한 메시지를 꺼내 재사용 한다.
Message msg = Message.obtain();
// static Message obtain(Handler h, int what, int arg1, int arg2)
// Message msg = Message.obtain(mHandler, 0, val, 0);
msg.what = 0;
msg.arg1 = val;
mHandler.sendMessage(msg);
try {
Thread.sleep(1000);
} catch(InterruptedException e) {
e.printStackTrace();
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment