Thread와 Handler는 같이 쓰이는 구조가 많음
------------------------------------
MainActivity.java
package com.example.thread;
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.Toast;
public class MainActivity extends AppCompatActivity {
Button btn_start, btn_stop;
Thread thread;
boolean isThread = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 스레드 시작
btn_start = (Button)findViewById(R.id.btn_start);
btn_start.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
isThread = true;
thread = new Thread() {
public void run() {
while (isThread) { // !를 붙이면 부정문으로 바뀜
// 예외가 발생할거 같은 의심되는 부문에 자동으로 오류를 감지해서 catch문으로 오류들을 예외처리 할 수 있음
try {
sleep(5000); // 1000에 1초
} catch (InterruptedException e) {
e.printStackTrace();
}
handler.sendEmptyMessage(0);
}
}
};
thread.start();
}
});
// 스레드 종료
btn_stop = (Button)findViewById(R.id.btn_stop);
btn_stop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
isThread = false;
}
});
}
private Handler handler = new Handler() {
@Override
public void handleMessage(@NonNull Message msg) {
Toast.makeText(getApplicationContext(),"khon", Toast.LENGTH_SHORT).show();
}
};
}
'안드로이드 앱 만들기' 카테고리의 다른 글
Service 백그라운드 음악 (0) | 2020.08.18 |
---|---|
Dialog (0) | 2020.08.18 |
Log 출력 및 주석 (0) | 2020.08.17 |
Fragment (0) | 2020.08.17 |
Recycler View (0) | 2020.08.15 |