안드로이드 With Java #13 Thread

Jake Seo·2020년 8월 7일
0

안드로이드 With Java

목록 보기
13/31

안드로이드 With Java #13 Thread

Thread 개념

Thread는 간단히 설명하면 작업 흐름을 뜻한다. 프로그램이 시작한다는 것은 Thread가 시작하는 것이고, 프로그램이 종료되는 것은 Thread가 종료되는 것임.

Thread의 동시성

Thread가 꼭 하나일 필요는 없으며, 메인 Thread를 진행하는 도중에 다른 Thread를 열어서 작업할 수 있음.

쓰레드는 동시적으로 진행될 수 있음.

Main Thread와 UI Thread

프로그램의 시작과 끝을 담당하는 Thread를 안드로이드에서는 Main Thread 또는 UI Thread라고 한다. Main Thread 또는 UI Thread에서만 사용자의 Input을 받을 수 있다.

또한 Main Thread는 잠깐 멈춰두거나 할 수 없다. 그런 일이 발생하면 Exception이 발생하며 프로그램이 종료될 수 있다.

Thread 실습

Thread 만드는 방법

  1. Runnable 따로 구성하기

  • Runnable 인스턴스를 만든다.
  • Thread 인스턴스를 만들고 Argument로 이전에 만든 Runnable 인스턴스를 넣는다.
  1. Runnable 바로 넣기

Runnable을 따로 생성하지 않고 바로 Argument에 넣는 방식인 위와 같이 짧은 축약형으로 만들어도 동일하다.

Runnable 객체를 참조하여 수행할 추가적인 작업을 할 필요가 없을 때에는 아래의 방법으로 만드는 것이 효율적이다.

Thread 실행시키는 방법

위와 같이 start() 메소드를 수행해야 한다. 제대로 실행되는지 한번 앱을 실행해보자.

실행결과

Log가 잘 찍힌 것을 볼 수 있다.

Thread에서 UI작업 해보기

먼저 한가지 주의해야 할 것은 메인쓰레드가 아닌 쓰레드에서 UI작업을 하면 안된다는 것이다. 한번 메인 쓰레드가 아닌데 Toast를 만드는 작업을 해보자.

Toast는 안드로이드 안내메세지 같은 것이다.

이렇게 만들어보았다.

매개변수는 차례로 context, text, duration이다.

MainActivity.this"토스트 메세지 테스트" 글자를 Toast.LENGTH_LONG(길게) 띄우라는 의미이다.

실행결과

Can't toast on a thread that has not called Looper.prepare()

위와 같이 에러가 뜬다.

UI 쓰레드를 만들고 다시 시도해보자.

UI 쓰레드 만들기

UI 쓰레드를 만드는 방법은 간단하다. runOnUiThread 메소드를 이용하면 된다.

실행 결과

드디어 Toast가 제대로 뜨는 것을 알 수 있다.

profile
풀스택 웹개발자로 일하고 있는 Jake Seo입니다. 주로 Jake Seo라는 닉네임을 많이 씁니다. 프론트엔드: Javascript, React 백엔드: Spring Framework에 관심이 있습니다.

0개의 댓글