그러나, 대부분의 경우 이 가이드에서는 다음 작업을 실행하는 방법을 보여줍니다. 앱의 정규 매니페스트에서 인텐트 서비스 정의 <application android:icon="@drawable/icon" android:label="@string/app_name"> ... <!-- Because android:exported is set to "false", the service is only available to this app. --> <service android:name=".RSSPullService" android:exported="false"/> ... </application>
기본 Content and code samples on this page are subject to the licenses described in the Content License. Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates. Last updated 2020-06-20 UTC. [{ "type": "thumb-down", "id": "missingTheInformationINeed", "label":"필요한 정보가 없음" },{ "type": "thumb-down", "id": "tooComplicatedTooManySteps", "label":"너무 복잡함/단계 수가 너무 많음" },{ "type": "thumb-down", "id": "outOfDate", "label":"오래됨" },{ "type": "thumb-down", "id": "translationIssue", "label":"번역 문제" },{ "type": "thumb-down", "id": "samplesCodeIssue", "label":"샘플/코드 문제" },{ "type": "thumb-down", "id": "otherDown", "label":"기타" }] [{ "type": "thumb-up", "id": "easyToUnderstand", "label":"이해하기 쉬움" },{ "type": "thumb-up", "id": "solvedMyProblem", "label":"문제가 해결됨" },{ "type": "thumb-up", "id": "otherUp", "label":"기타" }] 우찬쓰 개발블로그안드로이드 백그라운드 서비스 만들기 본문안드로이드가 오레오, 파이로 넘어가면서 백그라운드 서비스를 다루기가 점점 어려워지고 있다. 사실 어려워진다는 얘기도 백그라운드에서 서비스를 돌리면서도 Notification을 띄우지 않는 기술에 대한 꼼수(?)가 어려워 지고 있는거지 Notification이 뜨든 말든 상관없는 초보자들은 더 혼동이 오기 마련이다. 그래서 안드로이드 초보자의 기준에서, 안드로이드의 백그라운드 서비스를 공식적인 방법으로 띄우는 방법에 대해 알아보자. 여기서 용어를 정의하고 넘어가야 하는데, 앱이 죽든 말든 백그라운드에서 서비스를 죽지않게 하고 싶다면 이것을 포어그라운드 서비스 라고 한다. 따라서 이하 포어그라운드 서비스 라고 부르겠다. 먼저 서비스를 만들어야 하는데 생각보다 간단하다. 서비스를 상속받은 예제 서비스를 만들자
그리고 Activity에서
를 호출하면 끝이다. 생각보다 간단한데, 이렇게 간단한 예제 하나가 정리되어있는게 없다는게 참 아쉽다. 아마 다들 알겠지만 Google 정책이 바뀌면서 포어그라운드 서비스를 돌리기 위해서는 Notification이 항상 띄워져 있어야 한다. 그렇지 않으면 서비스가 돌지 않는다. 그리고 서비스를 더이상 돌리고 싶지 않다면
를 호출해 주는것도 잊지 않도록 하자. 더 나아가서, 포어그라운드 서비스와 엑티비티간 통신을 구현해 보자. 서비스와 엑티비티간 통신에는 LocalBroadcastManager를 사용한다. 먼저 서비스 부분에서 엑티비티로 보내기 위한 부분을 세팅해보자.
그 다음 엑티비티에서도 값을 전달받기 위해 다음과 같이 세팅한다.
매우 잘 작동하는 것을 확인할 수 있다. 엑티비티에서 서비스로 값을 전달할 때도 이와 같이 작업하면 된다. |