반응형
서비스란
백그라운드에서 동작하는 컴포넌트로 잘 알려져 있는데...
실제로는 화면만 없는 액티비티처럼 동작을 한다.
화면만 없는 액티비티? 이 말은 Service 는 Main Thread 를 사용하기 때문에 비유를 한거임.
1-1 Service의 실행방식
Service는 Started Service와 Bound Service 두 가지 형태로 실행된다.
Started Service
startService() 메서드로 호출하며 액티비타와 상관없이 독립적으로 동작할 때 사용한다.
액티비티의 종료와 무관하게 동작하므로 일반적으로 많이 사용하는 Service임
이미 동작 중인 상태에서 재시작을 요청할 경우 새로 만들지 않고,
생성되어 있는 서비스의 메서드를 호출함.
Bound Service
bindService() 함수로 호출하며 액티비티와 값을 주고받을 필요가 있을때 사용함
여러개의 액티비티가 같은 서비스를 사용할 수 있어서
기존에 생성되어 있는 서비스를 바인딩해서 재사용할 수 있다.
값을 주고받기 위한 인터페이스를 제공함.
하지만 인터페이스의 사용이 복잡하고,
연결된 액티비티가 종료되면 서비스도 같이 종료되기 때문에
특별한 경우를 제외하고는 잘 사용되지 않는다.
단, 액티비티 화면이 떠 있는 상태에서 백그라운드 처리도 함께할 경우에는
Started Service 보다 효율적일 수 있다.
반응형
댓글