jurano강의 lec6 android_annotations_threading
TRANSCRIPT
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()합니다 .
@Background 로 지정된 메소드를 호출하는 것만으로 Thread 를 시작할 수 있습니다 .
이는 AA 내부적으로 구현된 BackgroundExecutor 를 활용한 것으로 ,
정지 등 일련의 조작은 BackgroundExecutor 를 통해 수행할 수 있습니다 .
id 를 통해 쉽게 조작할 수 있다는 것이 특장점으로 꼽힙니다 .
@UiThread
지금까지는 @Background 를 활용하여background task 를 수행하는 법에 대해 알아보았습니다 .
그럼 View 에 영향을 줄 수 있는 RunOnUiThread() 는 어떻게 사용할까요 ?
이에 반해 @UiThread 를 사용하면 다음과 같이 메소드 형태로 작성할 수 있습니다 .
annotation 이름이 @UiThread 로 별도의 스레드가 아닌가 ? 라고 혼동하실 수 있지만 RunOnUiThread() 에 대한 wrapper 라고 생각하시는게 옳습니다 .