cnt1 숫자 자동 올라가기
package org.techtown.practice1;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.os.Message;
import android.util.Log;
import android.widget.Button;
import android.widget.TextView;
import android.os.Handler;
import org.w3c.dom.Text;
import java.util.Timer;
public class ThreadActivity extends AppCompatActivity {
Button button,button2;
TextView cnt1,cnt2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_thread);
cnt1 = findViewById(R.id.cnt1);
cnt2 = findViewById(R.id.cnt2);
button = findViewById(R.id.button);
button2 = findViewById(R.id.button2);
TimerThread thread = new TimerThread();
thread.start();
}
class TimerThread extends Thread {
TimerHandler handler = new TimerHandler();
public void run() {
for (int i = 0; i < 10; i++) {
Log.d("TimeThread", "카운트" + (i + 1));
Message msg = new Message();
msg.arg1=i+1;
handler.sendMessage(msg);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
class TimerHandler extends Handler{
@Override
public void handleMessage(@NonNull Message msg) {
int count = msg.arg1;
cnt1.setText(String.valueOf(count));
}
}
}
cnt2 버튼 하나 더
package org.techtown.practice1;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.os.Handler;
import org.w3c.dom.Text;
import java.util.Timer;
//할 일
//1. 스레드 생성 - 로직 추가
//2. 핸들러 생성
public class ThreadActivity extends AppCompatActivity {
Button button,button2;
TextView cnt1,cnt2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_thread);
cnt1 = findViewById(R.id.cnt1);
cnt2 = findViewById(R.id.cnt2);
button = findViewById(R.id.button);
button2 = findViewById(R.id.button2);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
TimerThread thread = new TimerThread();
thread.start();
button.setEnabled(false);
}
});
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
TimerThread2 thread2 = new TimerThread2();
thread2.start();
button2.setEnabled(false);
}
});
//2. Thread객체생성
TimerThread thread = new TimerThread();
//3.Thread 실행
thread.start();
}
//1.스레드 상속
class TimerThread extends Thread {
//5.Thread가 실행이 됐을때, 핸들러를 만들어 주고
TimerHandler handler = new TimerHandler();
//1-1.run
public void run() {
//1-2.기능 구현
for (int i = 0; i < 10; i++) {
Log.d("TimeThread", "카운트" + (i + 1));
//4.이후 못씀 cnt1.setText(String.valueOf(i+1));
//Handler에 값을 전달 -> Message객체
Message msg = new Message();
//값을 저장할 수 있는 변수 arg1,2 obj 타입에 맞게 담아두기
msg.arg1=i+1;//★
//Message객체 전송->핸들러 객체 이용해서 해야됨 > 핸들러 객체 생성
//6.
handler.sendMessage(msg);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
//4.handler
class TimerHandler extends Handler{
@Override
public void handleMessage(@NonNull Message msg) {
//()안 어떤 데이터를 받아오느냐?
//7.msg부터 정보를 받아온 후 변수에 저장하고 괄호에 넣는다
int count = msg.arg1;
cnt1.setText(String.valueOf(count));
}
}
///////////////////
//1.스레드 상속
class TimerThread2 extends Thread {
//5.Thread가 실행이 됐을때, 핸들러를 만들어 주고
TimerHandler2 handler = new TimerHandler2();
//1-1.run
public void run() {
//1-2.기능 구현
for (int i = 0; i < 10; i++) {
Log.d("TimeThread", "카운트" + (i + 1));
//4.이후 못씀 cnt1.setText(String.valueOf(i+1));
//Handler에 값을 전달 -> Message객체
Message msg = new Message();
//값을 저장할 수 있는 변수 arg1,2 obj 타입에 맞게 담아두기
msg.arg1=i+1;//★
//Message객체 전송->핸들러 객체 이용해서 해야됨 > 핸들러 객체 생성
//6.
handler.sendMessage(msg);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
//4.handler
class TimerHandler2 extends Handler{
@Override
public void handleMessage(@NonNull Message msg) {
//()안 어떤 데이터를 받아오느냐?
//7.msg부터 정보를 받아온 후 변수에 저장하고 괄호에 넣는다
int count = msg.arg1;
cnt2.setText(String.valueOf(count));
}
}
/////////////////
}
thread 하나로
package org.techtown.practice1;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.os.Handler;
import org.w3c.dom.Text;
import java.util.Timer;
public class ThreadActivity extends AppCompatActivity {
Button button,button2;
TextView cnt1,cnt2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_thread);
cnt1 = findViewById(R.id.cnt1);
cnt2 = findViewById(R.id.cnt2);
button = findViewById(R.id.button);
button2 = findViewById(R.id.button2);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
TimerThread thread = new TimerThread(cnt1);
thread.start();
button.setEnabled(false);
}
});
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
TimerThread thread2 = new TimerThread(cnt2);
thread2.start();
button2.setEnabled(false);
}
});
}
class TimerThread extends Thread {
TimerHandler handler = new TimerHandler();
TextView tv;
public TimerThread(TextView tv){
this.tv = tv;
}
public void run() {
for (int i = 0; i < 10; i++) {
Log.d("TimeThread", "카운트" + (i + 1));
Message msg = new Message();
msg.arg1=i+1;
msg.obj = tv;
handler.sendMessage(msg);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
class TimerHandler extends Handler{
@Override
public void handleMessage(@NonNull Message msg) {
int count = msg.arg1;
TextView tv = (TextView) msg.obj;
tv.setText(String.valueOf(count));
}
}
class TimerThread2 extends Thread {
TimerHandler2 handler = new TimerHandler2();
public void run() {
for (int i = 0; i < 10; i++) {
Log.d("TimeThread", "카운트" + (i + 1));
Message msg = new Message();
msg.arg1=i+1;
handler.sendMessage(msg);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
class TimerHandler2 extends Handler{
@Override
public void handleMessage(@NonNull Message msg) {
int count = msg.arg1;
cnt2.setText(String.valueOf(count));
}
}
}