2010-05-16 7 views
7

내가 활동 (A)와 같이 A로 시작됩니다 서비스 (S)이 : 내가 원하는 이제Android : 서비스의 활동 기능 호출 방법

public void someInfoArrived(Info i){...} 

:

Intent i = new Intent(); 
i.putExtra("updateInterval", 10); 
i.setClassName("com.blah", "com.blah.S"); 
startService(i); 

을 A의 이와 같은 기능을 가지고 S 내에서 A.someInfoArrived (i)를 호출하십시오. Intent.putExtra에는 Object 참조 등을 전달할 수있는 버전이 없습니다 ... 도와주세요!

추신 : 다른 방법으로 (새로운 정보에 대한 폴링 S) 내가 원하는 것이 아닙니다. 어떻게하는지에 대한 충분한 정보를 찾았습니다.

답변

14

하나의 옵션은 startService()에서 bindService()으로 전환하고 로컬 바인딩 패턴을 사용하는 것입니다. 그런 다음 리스너 또는 콜백 메소드를 등록하기 위해 어느 시점에서 S의 메소드를 호출해야합니다. 그런 다음 S는 일부 정보가 도착하면 A에서 호출 할 수있는 무언가를 갖게됩니다. 그 here에 대한 샘플 프로젝트를 볼 수 있습니다.

또는 startService()을 남겨두고 Intent 브로드 캐스트를 사용하여 S에게 일부 정보가 도착했음을 알릴 수 있습니다. 그런 방송을 시연하는 샘플 프로젝트를 볼 수 있습니다 Intenthere.

+1

고맙습니다. 그게 내가 찾고 있던 것입니다. 포럼에 대한 나의 희망과 믿음이 회복되었습니다 :) – nex

+0

두 번째 제안을 구현했는데 그것은 매력처럼 작동합니다. 다시 한 번 감사드립니다! – nex