jurano강의 lec6 android_annotations_threading

17
AndroidAnnotations Threading 작작작 – 작작작 작작 작작작 : 151202

Upload: ju-ri-seo

Post on 15-Apr-2017

202 views

Category:

Software


3 download

TRANSCRIPT

AndroidAnnotationsThreading

작성자 – 김태희 최종 수정일 : 151202

Threading

Enhanced components 는 안드로이드의 기본 컴포넌트들을

쉽고 빠르게 사용할 수 있도록 해 줍니다 .

Threading구성@Background@UiThread@SupposeBackground@SupposeUiThread

Threading구성@Background@UiThread@SupposeBackground@SupposeUiThread

본 강에서는 이 중 주요 annotation 들을 활용한 예제 어플리케이션을 통해 사용법을 익혀보도록 합니다 .

예제 소스 코드는 아래에서 확인하실 수 있습니다 .https://github.com/JuranoSaurus/ThreadingSample

@Background0.5 초마다 숫자를 1 씩 증가시키며 로그를 찍는 예제입니다 .

Activity 생성시 Background Task 를 실행하며 버튼을 통해 Interrupt 를 발생시켜 Background Task 를 멈출 수 있습니다 .

다음 장에서는 AA 를 사용하지 않고 Java Thread 를 사용했을 때의 예시를 보겠습니다 .

TASK_ID 를 Key 로 가지는 Map 을 활용하여 ThreadPool 을 만들고 , 버튼을 누르면 해당 TASK_ID 를 가진 Thread 를 찾아 interrupt()합니다 .

TASK_ID 를 Key 로 가지는 Map 을 활용하여 ThreadPool 을 만들고 , 버튼을 누르면 해당 TASK_ID 를 가진 Thread 를 찾아 interrupt()합니다 .

btnStopTask() 가 호출되었을 때의 모습입니다 .InterruptedException 을 통해 Thread 를 종료하였습니다 .

@Background

그렇다면 @Background annotation 을사용했을 때는 어떻게 될까요 ?

@Background 로 지정된 메소드를 호출하는 것만으로 Thread 를 시작할 수 있습니다 .

이는 AA 내부적으로 구현된 BackgroundExecutor 를 활용한 것으로 ,

정지 등 일련의 조작은 BackgroundExecutor 를 통해 수행할 수 있습니다 .

id 를 통해 쉽게 조작할 수 있다는 것이 특장점으로 꼽힙니다 .

내부의 thread pool 은 ArrayList 로 구현되어 있습니다 .

thread 는 Runnable 인터페이스를 구현한 것임을 확인할 수 있습니다 .

@UiThread

지금까지는 @Background 를 활용하여background task 를 수행하는 법에 대해 알아보았습니다 .

그럼 View 에 영향을 줄 수 있는 RunOnUiThread() 는 어떻게 사용할까요 ?

기본 안드로이드는 RunOnUiThread() 를 통해 View 를 컨트롤 하는 것이 가능합니다 .

이에 반해 @UiThread 를 사용하면 다음과 같이 메소드 형태로 작성할 수 있습니다 .

annotation 이름이 @UiThread 로 별도의 스레드가 아닌가 ? 라고 혼동하실 수 있지만 RunOnUiThread() 에 대한 wrapper 라고 생각하시는게 옳습니다 .

@Background 때와 다르게 TextView 의 값을 변경 가능한 것을 확인할 수 있습니다 . ^_^

@More

즐거우셨나요 ? ^_^

다음 편에는 Resource Injection 에 대한 annotation 들을 알아보도록 하겠습니다 .

Thank you