어떤 경우 서비스를 시작해야하며 어떤 경우 바인드 서비스를해야합니까? 예 : - 뮤직 서비스를위한 안드로이드 클라이언트? 시스템의 우선 순위에 차이가 있는지, 일반적인 규칙인지 여부, 다른 것?Android 서비스 : 바인딩 또는 시작 하시겠습니까?
16
A
답변
18
서비스를 시작한 후에 독립적으로 실행되는 서비스의 경우 startService()
을 사용하십시오. 음악 플레이어가 좋은 예입니다. 이 전화 번호는 stopSelf()
으로 전화하거나 누군가 stopService()
으로 전화 할 때까지 계속됩니다.
Intent를 앞뒤로 보내 실행중인 서비스와 통신 할 수 있지만 대부분 서비스를 시작한 다음 실행하면됩니다.
서비스와 클라이언트가 지속적인 연결을 통해 앞뒤로 통신 할 때 bind()
을 사용하십시오. 좋은 예는 위치 업데이트를 다시 클라이언트로 전송할 탐색 서비스입니다. 바인더는 의도보다 작성하기가 훨씬 어렵지만 실제로는이 사용 사례로 이동하는 방법입니다. 우선 순위에 관한
: 프로세스의 모든 활동이 자신의 가시성을 잃을 때 onStart()
시작 된 서비스를 호스팅하는 경우, 프로세스는 그렇지 않은 경우는 백그라운드 프로세스하게하는 서비스 프로세스된다. 서비스 프로세스는 백그라운드 프로세스보다 우선 순위가 높습니다. 자세한 내용은 android developer site.
보이는 활동이없는 서비스 프로세스의 우선 순위가 더 높은 경우 (예 : 중단되지 않아야하는 음악 플레이어) 서비스는 startForeground()
으로 전화 할 수 있습니다.
관련 문제
- 1. Android 서비스 시작/중지
- 2. Android NFC 시작 서비스
- 3. Android : 서비스 시작 활동
- 4. Android 서비스 다시 시작
- 5. Android 시작 서비스/애플리케이션
- 6. 다른 프로세스에서 활동 또는 시작 서비스에서 서비스에 바인딩 하시겠습니까?
- 7. Android - 서비스 바인딩
- 8. Android 서비스 디자인 - 활동을 시작하거나 필요한 경우에만 시작 하시겠습니까?
- 9. Android : 서비스 startService 또는 Bind 서비스
- 10. Android : 매개 변수가있는 서비스 시작
- 11. Android 시작시 백그라운드 서비스 시작
- 12. 바인딩 할 수있는 Android 포 그라운드 서비스
- 13. Android 원격 바인딩 서비스 인터페이스
- 14. Android - 어디서나 알림을 시작 하시겠습니까?
- 15. Android : WiFi 상태에 따라 서비스 중지/시작 하시겠습니까?
- 16. android 서비스 및 스레드 시작 및 제거
- 17. 재부팅하지 않고 서비스 일정을 시작 하시겠습니까?
- 18. 자체 메모리 공간으로 활동 또는 서비스 시작
- 19. numpy 또는 scipy로 시작 하시겠습니까?
- 20. 기존 인 텐트 서비스 구독 또는 바인딩
- 21. SMS/MMS 메시지에서 Android 앱을 시작 하시겠습니까?
- 22. Android 시작 서비스 onStart 및 다른 문제
- 23. Android - 서비스 - 시작 명령에서 한 번만 호출
- 24. 응용 프로그램을 확장하는 클래스에서 서비스 시작 android
- 25. 부팅시 Android 서비스 시작 및 PreferenceChange
- 26. 새 활동 시작 BroadcastReceiver 또는 서비스 클래스
- 27. Android 서비스 : 요청시 바인딩 vs. #onCreate()에 바인딩
- 28. 서비스 시작
- 29. Android 서비스 - 서비스 시작 및 다른 활동으로 리디렉션
- 30. 다른 패키지에서 서비스 시작
Google 개발자 자습서에서는 백그라운드에서 음악을 재생하는 자체 서비스에 활동을 바인딩해야하는 음악 응용 프로그램에 바인딩이 적합 할 것이라고 언급합니다. "그렇다면 startService가 있어야한다고하는 내용이 있습니다. 사용. 나는 지금 당장 나는 묶는 것이나 시작하는 것과 같은 질문으로 어려움을 겪고 있기 때문에 논평하고있다. –
Google 개발자 가이드는 끔찍하고 그리워합니다. –
정말, 어느 쪽이든 작동합니다. startService()는 일반적으로 자체적으로 실행될 서비스에 가장 적합한 선택이며, 앱과 서비스가 일정한 앞뒤로 통신 할 때 bind()가 일반적으로 최선의 선택입니다. 하지만 startService() 스타일의 서비스와 앞뒤로 통신하기 위해 Intent를 사용할 수도 있고, bind()를 사용하여 서비스를 시작한 후 실행시킬 수도 있습니다. 당신이 원하는대로하십시오. 솔직히, 바인더는 많은 작업을 작성하므로 피할 수 있습니다. 바인더 주변의 편리한 래퍼 인 ResultReceiver를 사용할 수도 있습니다. –