핸들러(쓰레드)에 관한 방법임. message를 이용해서 send하는 방법은 자바내용 참조.
00. 버튼을 만들어준다.
01. 텍스트뷰를 만들어준다.
02. 순서는 상관없지만 핸들러에 빨간줄이 뜨면 ALT+ENT를 눌러서 OS로 설정.
03. 코드작성.
package com.example.joey.myhandler;
import android.os.Bundle;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
TextView textView;
Handler handler = new Handler();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = (TextView) findViewById(R.id.textView);
Button button01 = (Button) findViewById(R.id.button); //버튼찾기
button01.setOnClickListener(new View.OnClickListener() { //버튼찾아 기능부여
@Override
public void onClick(View v) {
RequestThread thread = new RequestThread(); //새로운 쓰레드객체만듬
thread.start(); //쓰레드 시작
}
});
}
class RequestThread extends Thread {
public void run() {
for (int i = 0; i < 100; i++) {
println("#" + i + " : 호출됨.");
try {
Thread.sleep(500); //0.5초 지연
} catch (Exception e) {
e.printStackTrace();
}
}
}
public void println(final String data) {
handler.post(new Runnable() { //post로 던져줌
@Override
public void run() {
textView.setText(data);
}
});
}
}
}
04. 실행시킨다.
05. 버튼을 눌러 정상작동하는지 확인한다.
06. 정상작동을 확인 할 수 있다.
(※ 왜인지는 모르겠지만 쓰레드 슬립 시킬때 Try-Catch를 안쓰면 에러가 뜨게된다.)