Android Studio 13일차

정준호·2022년 5월 19일
0

Android Studio

목록 보기
13/14
post-thumbnail

Thread란 - 멀티태스킹
프로그램실행 > 프로세스 하나에 쓰레드가 꼭 들어있다
cpu - 한번에 한가지일 -> 시분할(엄청짧은시간동안 처리) -> 연속적인 일
동시에 다른일을 하고싶을때 쓰레드를 써야한다
super -> 부모에 있는 메소드를 실행시키겠다
Interrupted -> 가로채다
클래스안에 클래스 => 이너클래스
핸들러 -> UI,UX 수정하고싶을때 필수
쓰레드 2가지 방법
상속, 인터페이스

1초씩 세는 타이머 만들기

코드


스톱워치 만들기

코드



정답코드(선생님코드)

package com.example.ex220519;

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;

public class MainActivity2 extends AppCompatActivity {

    private Button btn_start, btn_stop, btn_reset;
    private TextView tv_result;
    private int minute; // 분
    private int second; // 초
    private int milliSecond; // 밀리초

    private Handler handler = new Handler(){
        @Override
        public void handleMessage(@NonNull Message msg) {
            String result = "";

            if(msg.arg1 < 10){
                result += "0" + msg.arg1;
            }else{
                if(msg.arg1 == 100){
                    second++;
                    milliSecond = 0;
                }
                result += msg.arg1;
            }

            if(second < 10){
                result = "0" + second +"."+ result;
            }else{
                result = second +"."+ result;
                if(second >= 60){
                    minute ++;
                    second = 0;
                }
            }
            if(minute < 10){
                result = "0" + minute + ":" + result;
            }else{
                result = minute + ":" + result;
            }
            tv_result.setText(result);

        }
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);

        tv_result = findViewById(R.id.tv_result);
        btn_reset = findViewById(R.id.btn_reset);
        btn_stop = findViewById(R.id.btn_stop);
        btn_start = findViewById(R.id.btn_start);

        btn_start.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                MyThread thread = new MyThread();
                thread.start();
            }
        });


    }

    public class MyThread extends Thread{
        @Override
        public void run() {
            while(true){
                try {
                    Thread.sleep(10);
                    milliSecond++;

                    Message message = new Message();
                    message.arg1 = milliSecond;
                    handler.sendMessage(message);

                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}
profile
파이팅

0개의 댓글