2012-01-15 5 views

답변

1

당신이 할 수있는 일은 잠재적으로 당신의 활동을 통해 의사 소통을하는 방송 수신기를 당신의 서비스에 추가하는 것입니다. 여기

는 통신입니다 : 활동에서
  • 이 에 활동에서이 방송을 듣고 (잠재적 서비스)

  • 이 브로드 캐스트 리시버를 가지고 방송을 보내고 그것을받을 때, 단지 귀하의 서비스에서 발견 된 회원 변수를 업데이트하십시오.

+0

서비스를 다시 시작 하시겠습니까? 나에게 그것을 구현하는 방법을 보여주기 위해 의사 코드 나 실제 코드를 추가 하시겠습니까? 감사합니다 –

+0

서비스가 작동하려면 이미 실행 중이어야합니다. – JoxTraex

+0

바인딩은 풍부한 API를 서비스에 공개하는 표준 방법이지만 서비스가 수행중인 작업을 변경하기 위해 다른 용도로 startService를 다시 호출하는 것도 가능합니다. 최악의 대안은 클라이언트 활동에서 브로드 캐스트를 서비스로 보내는 것입니다. – bergsell

0

가정 당신은 당신이 어떤 일을하기 위해 클라이언트에서 startService()로 시작하는 서비스를 가지고 오랜 기간 동안 백그라운드에서 (예를 들어 탐색을 시작), 다음 클라이언트는 변경하고자 어떤 방식 으로든 서비스 작동 (예 : GPS 사용). 그런 다음 서비스에 바인딩 할 수 있도록 (즉, 서비스를 시작하고 바인딩 할 수 있음) 추천 할 것입니다.

서비스에 바인딩하는 것은 서비스에 대한 견고한 API에 액세스하는 기본 방법입니다. 그리고 로컬 서비스 (클라이언트와 서비스가 동일한 프로세스 내에서 실행되는 경우)를 만드는 것은 매우 간단합니다.

http://developer.android.com/guide/topics/fundamentals/bound-services.html#Binder

(두 번째 대안은 새로운 매개 변수를 다시 startService를 호출 할 수 있지만이 서비스에 바인딩보다 더 나은 경우 실제 사용 사례에 따라 달라집니다 것입니다.)

도 간단한 API 만들기 인 텐트 사용은 오류가 발생하기 쉽고, 클라이언트가 바인드하지 않는 한 클라이언트가 서비스 상태에 대해 통지받지 않기 때문에 (낮은 메모리 상황에서) 서비스가 호출간에 중단되는지 여부는 알 수 없습니다. 그리고 언제나처럼, 시작된 서비스가 영원히 계속 될 것이라는 보장은 없습니다. 당신의 서비스가 죽을 것이라고 가정하십시오; 얼마나 걸릴지는 단지 문제 일뿐입니다.

관련 문제