[안드로이드 스튜디오/코틀린] 서비스와 인텐트 서비스

2021. 5. 3. 10:47안드로이드

SMALL

서비스

activity_main.xml

서비스 : 화면 없는 액티비티

 

AndroidManifest.xml

 

 

MyService.kt

 

 

 

MyIntentService

 

MainActivity.kt

-----------------------------------------------------------------------------------------------------

일반 서비스와 인텐트 서비스의 차이점

일반 서비스

 - 메인 스레드(화면 담당 스레드)에서 동작한다.

 - startService()로 서비스를 실행하면 내가 연결시켜준 MyService의 onStartCommand가 호출이 된다.

 - 실행할 때마다 계속 호출된다.

 - 메인 스레드에서 동작하기 때문에, 오래 걸리는 작업을 하면서 동시에 화면을 조작하고 싶으면 스레드로 처리하도록      작성해야 한다.

 -  stopService()를 호출하면 그때 스레드가 제거된다.

인텐트서비스

 - Manifest에 등록해야 한다.

 - 서브 스레드에서 동작한다.

 - 실행하면 호출되고, 작업을 완료하면 자동으로 스레드가 제거된다.

 - 호출한 순서대로 작업을 수행한다.

 

 

실행 방식에 따라 '스타티드 서비스' '바운드 서비스'로 나누어 진다.

스타티드 서비스 : 액티비티와 상관없이 독립적으로 실행할 때 사용하는 서비스

 - 일반적으로 사용하는 서비스

 

바운드 서비스 : 액티비티와 값을 주고 받아야 할 떄 사용하는 서비스

 -  MyService()의 함수를 직접 호출이 가능하다. ㄱ

MyService.kt

 

MainActivity.kt

 

MainActivity.kt

바운드 서비스 화면

BIND 서비스 호출하지 않고 서비스함수직접호출 버튼 클릭 시
BIND 서비스 호출한 뒤 서비스함수직접호출 클릭 시

LIST