official documentation에는 "귀하의 애플리케이션은 귀하의 애플리케이션과 Android 마켓 간의 메시징을 용이하게하기 위해 로컬 서비스가 있어야합니다."라고되어 있습니다.Android 인앱 결제 : 로컬 서비스를 만드는 것이 정말로 필요한가요?
제 질문은 이것이 정말로 필요한 것입니까? 그렇다면 왜?
로컬 서비스를 먼저 만들 필요없이 Activity의 onCreate 메소드에서 MarketBillingService에 간단하게 바인딩 할 수는 없습니까?
요청을 원격 MarketBillingService로 전달하는 로컬 서비스를 생성하면 조금 복잡해 보입니다.
는 던전 샘플 응용 프로그램은'mBillingService.unbind()'에서 주요 활동의들의 OnDestroy 메소드를 호출합니다. 따라서 지역 서비스의 수명은 주요 활동의 수명과 동일해야합니다. 또한 로컬 서비스는 자체 스레드를 생성하지 않으므로 모든 작업이 프로세스의 주 스레드에서 수행됩니다. 그렇다면 현지 서비스를받는 것이 무엇입니까? 안드로이드에게 "내 프로세스를 죽이지 마세요"라고 말하는 것이 전부입니까? IMO 서비스는 그것을 보증하지 않습니다. – devconsole
예제의 서비스는 바인드 된 컨텍스트에서 실행되지 않으며'unbind() '에 대한 호출은 여기의 라이프 사이클과는 아무런 관련이 없습니다. 레퍼런스를 얻고 직접 레퍼런스를 호출하는 것은 액티비티에서만 가능합니다. 이 서비스는 주로 브로드 캐스트를 수신 한 결과 시작되며 지정된 작업이 완료 될 때까지 실행됩니다. 요컨대, Receiver에서 모든 작업을 Activity에 바인딩하면 사용자가 해당 Activity를 떠날 때 어떤 일이 발생합니까? 사건은 너무 오랜 기간에 걸쳐 발생합니다. 서비스는 중요하지 않습니다. 사용자는 퇴장 할 수 있으며 작업은 여전히 완료됩니다. – Devunwired
플러스, 다른 비동기 이벤트 중 하나가 들어 오면 Activity를 시작하거나 (사용자를 체크 할 것임) BroadcastReceiver에서 직접 처리하려고하지 않아도됩니다. 즉, 모든 것이 동 기적으로 또는 수신기 인스턴스가 죽을 것입니다. IMO의 경우,이 예에서의 진짜 보잘 것없는 부분은 Handler와 서비스와 상호 작용하는 데 필요한 다른 계층에 있습니다. – Devunwired