반응형
프로세스와 스레드.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
반응형
Untitled Document.md

Platform과 Framework의 차이는?


Platform(플랫폼)과 Framework(프레임워크)의 차이가 무엇인가? 공부를하다보니 이 부분이 궁금해졌다. 미흡한 부분이 있을지도 모르지만, 이해한대로 정리해보았다.

정의


  • Platform : 소프트웨어를을 실행시킬 때의 기반이 되는 환경과 설정 Computing Platform - Wikipedia

  • Framework : 컴퓨터 프로그래밍에서 구조적으로 고정된 부분을 재사용할 수 있도록 하고, 응용별 특정 기능을 추가적인 사용자 작성 코드에 의해 선택적으로 구현 가능하도록 하는 포괄적인 추상 구조, 그리고 이를 지원하는 소프트웨어 플랫폼을 말한다. 프레임워크 - 두산백과

차이


위에 정의를 봤을 때는 쉽게 와닿지 않는다. 그러나 간단하게 정리해보면 이렇게 정의할 수 있다. 플랫폼은 소프트웨어가 실행되는 환경과 설정이고, 프레임워크는 소프트웨어가 개발될 수 있는 뼈대이다. 위에 프레임워크의 정의를 보면, 플랫폼도 프레임워크의 일종으로 볼 수 있다.

결론


인터넷을 여러 곳에서 찾아봤지만, 어느 곳에서도 명쾌한 차이점과 정의를 나타내는 곳이 없었다. 플랫폼과 프레임워크가 각각 다르지만, 추상적인 개념이므로 명확하게 차이를 이해하는 것이 어렵다. 아래에 링크는 플랫폼과 프레임워크의 차이에 대해 공부하면서 참고한 블로그이다.

반응형

'programming' 카테고리의 다른 글

소프트웨어 공학이란?  (0) 2015.11.01
Android SDK란?  (0) 2015.10.29
안드로이드란?  (1) 2015.10.28
퀵 정렬(quick sort)  (0) 2013.12.05
다익스트라(Dijkstra's) 알고리즘  (0) 2013.12.04
반응형


< 쏠캘린더 >


간단하고 깔끔한 일정관리

스마트폰으로 적당한 일정관리 어플이 없을까...?

라고 고민하며 여러가지 캘린더 어플을 살펴보고 다운받아보았습니다.

그러면서 제한테 가장 잘 맞는 일정관리 어플을 찾게되었죠. 

제가 찾던 '깔끔하고 간단하며 있을 건 다 있는' 바로 쏠캘린더입니다.


< 당신이 필요한 모든 것 >

일정, 달력, D-day, 다이어리. 이 모든 것을 심플하게 한 어플에서 사용할 수 있을까요?

제가 찾아봤을때는 이 것을 만족해주는 어플이 없더라구요. 그래도 쏠캘린더가 제가 원하는 것과 가장 근접한 어플입니다. 


< 깔끔한 위젯 >

가장 마음에 들었던 부분중에 하나입니다. 네이버캘린더도 깔끔하긴 하지만 쏠갤린더의 색감이 훨씬 감성적이고 심플한 느낌이 들더라구요.


< 일정관리1 >

하루하루 스케줄관리가 가능합니다. 오른쪽에는 스티커로 잘보이게 표시도 가능하구요.

밑에보면 시간에 상관없이 해야할 일도 한번에 확인이 가능합니다.


< 일정관리2 >

달력형식이 아닌 목록으로 해야할 일일정을 확인 할 수도 있습니다.


< 할 일 >

할 일도 이렇게 간단하게 적어서 표시할 수 있습니다. 제가 가장 자주 사용하는 기능인데요.

해야 할 일을 간단하게 입력하고, 오른쪽에 체크하게되면 할 일을 했는지 안했는지 직관적으로 확인 할 수 있습니다. 



< 동영상 소개 >

쏠캘린더에서 만든 소개 동영상도 있더라구요. 아마 위에 글보다는 훨씬 이해가 잘 될 것입니다.


< 마지막으로...>

쏠캘린더PC와도 연동하여 사용할 수 있습니다. 구글, 다음등 여러가지 캘린더를 동기화 시킬 수 있는 것도 가장 큰 장점입니다.

일정관리 어플들이 정말 많이 나와있는데 그 중 저와 가장 잘 맞는 어플을 소개드렸습니다.

네이버캘린더를 원래 사용하고 있었지만, 어플로 제작하는 것은 '다음'이 좀 더 저와 잘 맞는거 같더라구요.

이상 포스팅을 마치겠습니다!


반응형

'IT 모바일' 카테고리의 다른 글

네이버 밴드 PC와 연동방법  (0) 2015.02.18
네이버'밴드'<유용한 모임어플>  (0) 2015.02.14
버즈런처<쉽고 깔끔한 런처/어플>  (0) 2015.02.04

+ Recent posts