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
Posted by khon98
,