android - running in a background service
Background Service 실행
특정 화면내에서 장시간 작업의 수행은 Background Thread를 이용합니다.
그러나 특정 화면에 국한되지 않거나 매우 긴 작업 수행이 필요한 경우 Background Service를 이용할 수 있습니다.
Background Service의 대표적인 예가 IntentService이며 이를 활용하는 방법을 설명합니다.
1.Background Service 생성
1) IntentService를 상속받는 클래스를 만듭니다.
2) onHandleIntent() 콜백 메소드를 구현합니다.
- 해당 메소드의 인자로 받은 Intent로 요청 데이터를 받아 단일 쓰레드로 작업을 처리할 수 있습니다.
3) AndroidManifest.xml에 service로 등록합니다.
2. Background Service에 작업 요청하기
1) Intent에 작업 요청을 위한 데이터 세팅
2) startService() 메소드로 서비스 호출 및 작업 요청
3) IntentService의 onHandleIntent()가 콜백되어 작업처리
- onHandleIntent() 메소드가 콜백되어 실행되며 이는 단일 쓰레드 이기에 한번에 하나의 Intent씩 처리됩니다.
- onHandleIntent() 처리중 다른 요청이 오게되면 이전 작업이 완료된 후 처리됩니다.
3. 작업 상태 레포팅
1) IntentService에서 작업 상태 레포팅 하기
- LocalBroatcastManager의 sendBroadcast() 메소드를 이용하여 주기적인 레포팅
2) BroadcastReceiver를 LocalBroatcastManager로 등록하여 onReceive() 콜백 메소드로 레포팅 결과를 얻을 수 있습니다.
특정 화면내에서 장시간 작업의 수행은 Background Thread를 이용합니다.
그러나 특정 화면에 국한되지 않거나 매우 긴 작업 수행이 필요한 경우 Background Service를 이용할 수 있습니다.
Background Service의 대표적인 예가 IntentService이며 이를 활용하는 방법을 설명합니다.
1.Background Service 생성
1) IntentService를 상속받는 클래스를 만듭니다.
2) onHandleIntent() 콜백 메소드를 구현합니다.
- 해당 메소드의 인자로 받은 Intent로 요청 데이터를 받아 단일 쓰레드로 작업을 처리할 수 있습니다.
3) AndroidManifest.xml에 service로 등록합니다.
2. Background Service에 작업 요청하기
1) Intent에 작업 요청을 위한 데이터 세팅
2) startService() 메소드로 서비스 호출 및 작업 요청
3) IntentService의 onHandleIntent()가 콜백되어 작업처리
- onHandleIntent() 메소드가 콜백되어 실행되며 이는 단일 쓰레드 이기에 한번에 하나의 Intent씩 처리됩니다.
- onHandleIntent() 처리중 다른 요청이 오게되면 이전 작업이 완료된 후 처리됩니다.
3. 작업 상태 레포팅
1) IntentService에서 작업 상태 레포팅 하기
- LocalBroatcastManager의 sendBroadcast() 메소드를 이용하여 주기적인 레포팅
2) BroadcastReceiver를 LocalBroatcastManager로 등록하여 onReceive() 콜백 메소드로 레포팅 결과를 얻을 수 있습니다.
댓글
댓글 쓰기