<Class 구조>
<실습>
package com.example.ex_01719;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import org.w3c.dom.Text;
public class MainActivity2 extends AppCompatActivity {
TextView txt1, txt2;
Button btn1, btn2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
txt1 = findViewById(R.id.txt1);
txt2 = findViewById(R.id.txt2);
btn1 = findViewById(R.id.btn1);
btn2 = findViewById(R.id.btn2);
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// 사용하고 싶은 Thread를 호출!
MyThread thread = new MyThread(txt1);
thread.start();
}
});
btn2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
MyThread thread = new MyThread(txt2);
thread.start();
}
});
}
// Thread 생성
class MyThread extends Thread{
// 생성자 메소드를 통해 받아온 view를 담아줄수 있는 필드 생성
TextView txt;
// 원하는 view를 생성자 메소드를 통하여 가져오기!
public MyThread(View view){
this.txt = (TextView) view;
}
@Override
public void run() {
for(int i = 1; i <= 10; i++){
// Handler 호출하여 UI 변경 요청!
Message msg = new Message();
msg.arg1 = i;
msg.obj = txt;
handler.sendMessage(msg);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
Handler handler = new Handler(){
@Override
public void handleMessage(@NonNull Message msg) {
int num = msg.arg1;
TextView txt = (TextView) msg.obj;
txt.setText(String.valueOf(num));
}
};
}
'안드로이드' 카테고리의 다른 글
영화 박스오피스 App - Volley 라이브러리 활용, 영화진흥위원회 API 활용 (0) | 2022.07.19 |
---|---|
회원가입 (0) | 2022.07.19 |
안드로이드-이클립스 서버 통신 (0) | 2022.07.15 |
Volley (0) | 2022.07.15 |
Adapter View (0) | 2022.07.14 |