728x90
⚠️ 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;
...
}
}
결과화면
전체 코드
참고자료
안드로이드 스레드(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 |