반응형
프로세스와 스레드.md

[안드로이드]프로세스와 스레드




운영체제에서 프로세스와 스레드에 대해서는 들어봤을 것이다. 여기서는 안드로이드에서의 프로세스와 스레드를 살펴볼 것이다.


1. 프로세스와 스레드 개념


  1. 프로세스

    • 실행 중인 프로그램과 그것의 상태를 나타내는 단위
    • 하나 이상의 스레드를 가질 수 있음
    • 자신만의 메모리 공간을 가짐
    • 각각의 프로세스의 메모리 공간은 분리되어 있음
  2. 스레드

    • 프로그램의 실행 흐름을 표현하는 개념
    • 경량 프로세스라고 불림
    • 프로그램 실행을 담당하는 작업자라고 볼 수 있음
    • 한 프로세스에 속한 다른 스레드와 프로세스의 자원을 공유

2. 안드로이드에서 프로세스와 스레드


안드로이드는 멀티 프로세스, 멀티 스레드 환경을 제공한다. 리눅스 커널을 이용하고 있기 때문에 안드로이드 앱은 리눅스 운영체제의 프로세스를 기반으로 실핸된다. 기본적으로 하나의 앱을 실행하면 하나의 프로세스로 실행된다. 또한, 자바의 멀티 스레드 기능을 그대로 지원한다.


3. 메인 스레드와 작업 스레드


메인 스레드는 어플리케이션 실행을 위해서 생성된다. 메인스레드는 주로 생명주기 함수를 처리하거나 화면에 나오는 UI를 처리한다. 메인 스레드에서 오래 걸리는 작업을 수행하면, 사용자의 UI 이벤트에 즉각적으로 반응하지 않는 문제가 발생하게 된다. 따라서 메인 스레드는 긴 시간이 걸리는 작업을 처리하면 안된다. 따라서 긴 시간이 걸리는 작업은 작업 스레드를 따로 만들어 처리하는 것이 좋다.

  • 메인 스레드

    • 어플리케이션이 실행될 때 기본으로 생성되는 스레드이다.
    • 사용자 인터페이스 위젯에서 이벤트를 전달하거나 화면을 그리는 역할
    • 각종의 생명주기 함수들을 처리
    • UI 스레드(user interface thread)라고도 불림
  • 작업 스레드

    • 메인 스레드를 블록시키지 않기 위해서, 긴 시간이 걸리는 작업을 할 필요가 있는 경우 작성되는 스레드
    • 자바의 스레드 모델을 그대로 따른다. 즉, 다중 스레딩 기능을 사용할 있다.

4. 작업 스레드 주의점


안드로이드에서 뷰의 내용을 변경하여 화면을 갱신하는 작업은 원칙적으로 메인 스레드(UI 스레드)만 가능하다. 즉, 작업 스레드로는 UI를 직접 변경하면 안된다. 이 문제를 해결하기 위해서 안드로이드는 다른 스레드에서 UI 스레드에 접근하는 방법들이 존재한다. 아래에 몇 가지 메소드들이 있다.

  • Activity.runOnUiThread(Runnable)
  • View.post(Runnable)
  • View.postDelayed(Runnable, long)

post() 메소드는 View 클래스의 메소드로 Runnable 객체를 메시지 큐에 추가하게 된다. 따라서 Runnable 객체가 UI 스레드 위에서 실행된다.

또 다른 방법으로는 핸들러(Handler)를 사용하거나, AsyncTask 클래스를 상속받아서 사용하는 것이다.


참고


  • 그림으로 쉽게 설명하는 안드로이드 프로그래밍(생능출판, 천인국 지음)


반응형

'programming' 카테고리의 다른 글

[안드로이드]안드로이드 4대 컴포넌트  (3) 2015.11.06
[안드로이드]Android SDK version  (0) 2015.11.05
소수 구하는 알고리즘  (0) 2015.11.04
소프트웨어 공학이란?  (0) 2015.11.01
Android SDK란?  (0) 2015.10.29

+ Recent posts