[Android] Thread - 화면 변경하기(초시계)

2022. 10. 22. 03:10·Android
⚠️ 2021.01.22에 작성된 글입니다 ⚠️

 

Thread

Thread
1. 실
2. (이야기 등의) 가닥, 맥락

-네이버 사전

 

프로세스 내에서 순차적으로 실행되는 실행흐름의 최소 단위

- 개발자를 위한 레시피

 

 


Runnable 인터페이스로 초시계(time watch) 구현하기

코드 흐름 :

TimeWatchRunnable클래스 생성(handler를 사용해 화면에 1초마다 초가 증가)

↓

start 버튼 클릭

↓

TimeWatchRunnable를 가진 thread 생성 및 실행(start())

↓

thread 실행되며 1초마다 숫자 1씩 증가

↓

stop 버튼 클릭

↓

thread 중지(intterupt())

 

비슷한 흐름으로 숫자가 아닌 이미지를 변경할 수도 있다.

(이미지 변경 관련 코드는 다음 글에서 확인 가능)

 

 

TimeWatchRunnable 클래스

 

class TimeWatchRunnable implements Runnable {
    @Override
    public void run() {
        int value = 0;
        handler.post(new Runnable() {
            @Override
            public void run() {
                tvCount.setText("0");
            }
        });
        while (true) {
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
                Log.d("Thread", "status: interrupted");
                return;
            }
            value += 1;
            Log.d("Thread", "value: " + value);
            int finalValue = value;
            handler.post(new Runnable() {
                @Override
                public void run() {
                    tvCount.setText(String.valueOf(finalValue));
                }
            });
        }
    }
}

 

 

start, stop 버튼 클릭 이벤트

 

@SuppressLint("NonConstantResourceId")
@Override
public void onClick(View view) {
    switch (view.getId()) {
        case R.id.btn_timewatch_start:
            btnStart.setVisibility(View.GONE);
            btnStop.setVisibility(View.VISIBLE);
            if (thread == null)
                thread = new Thread(new TimeWatchRunnable());
            thread.start();
            break;
        case R.id.btn_timewatch_stop:
            btnStart.setVisibility(View.VISIBLE);
            btnStop.setVisibility(View.GONE);
            thread.interrupt();
            thread = null;
            break;
        
        ...
    }
}

 

 


결과화면

초시계 결과 화면

 

 


전체 코드

ThreadPractice

 

 

 

 


참고자료

안드로이드 스레드(Android Thread) :: 개발자를 위한 레시피 (tistory.com)

안드로이드 스레드 예제. 스레드로 고민해보기. (Android Thread UseCase) :: 개발자를 위한 레시피 (tistory.com)

 

 

 

공부하며 정리한 글입니다. 내용에 대한 피드백은 언제나 환영입니다.

728x90
저작자표시 비영리 변경금지 (새창열림)

'Android' 카테고리의 다른 글

[Android] Thread - 이미지 바꾸기  (0) 2022.10.23
[Android] Thread - 텍스트 변경하기  (0) 2022.10.23
[Android] Firbase 사진 업로드하기  (0) 2022.10.22
[Android] Firebase와 안드로이드 프로젝트 연결하기  (0) 2022.10.22
[Android] Glide 사용하기  (0) 2022.10.22
'Android' 카테고리의 다른 글
  • [Android] Thread - 이미지 바꾸기
  • [Android] Thread - 텍스트 변경하기
  • [Android] Firbase 사진 업로드하기
  • [Android] Firebase와 안드로이드 프로젝트 연결하기
Wintinue
Wintinue
201 Created!
  • Wintinue
    Win Record
    Wintinue
    • 📘 Post (68)
      • Android (32)
      • Nest.js (1)
      • NGINX (1)
      • Error (10)
      • AWS (1)
      • Git (3)
      • IT용어 (4)
      • CMD (2)
      • Language (5)
        • PHP (3)
        • Java (2)
      • Project (5)
        • 개인 프로젝트 (3)
        • 팀 프로젝트 (2)
  • 링크

    • Github
  • 전체
    오늘
    어제
  • hELLO· Designed By정상우.v4.10.3
Wintinue
[Android] Thread - 화면 변경하기(초시계)
상단으로

티스토리툴바