2010-02-17 5 views
2

내가 목록 인 활동이 있다고 가정 해보십시오. 이 Activity가 시작되면 Service를 호출합니다. 서비스는 백그라운드 작업을 수행합니다 - 다운로드, 구문 분석 및 목록 채우기.서비스는 활동과 어떻게 통신합니까? 어떻게 서비스가 서비스를 시작한 활동의 ​​메소드를 호출 할 수 있습니까?

내 질문은 다음과 같습니다. 서비스가 어떻게 활동과 통신 할 수 있습니까? 서비스에서 어떻게 활동을 불러올 수 있습니까? 본 서비스는 다음과 같이 시작

(나는 OOP에 새로운 해요) :

내 서비스가하는 일의
hello_service = new Intent(this, HelloService.class); 
startService(hello_service); 

하나는 다운로드이며 XML을 구문 분석합니다. 그 후, 그것은 목록을 작성해야합니다! 그래서, 나는 파싱 된 것들을 다시 액티비티에 전달하고 액티비티의 메소드를 호출하여 그리스트를 채우고 싶습니다.

답변

1

저는 최근에 매우 비슷한 질문 인 best way for service that starts activity to communicate with it을 요청했습니다. 매우 도움이되는 대답이 있습니다.

또한 활동이 닫힐 때 서비스가 활성 상태 일 필요가없는 경우 서비스 대신 AsyncTask을 사용하는 것이 좋습니다. 그런 다음 서버/활동 통신에 신경 쓰지 않아도됩니다.

0

서비스에서 활동 오브젝트를 설정하고 서비스에서 활동 메소드를 호출 할 수 있습니다. 그러나 UI를 업데이트 할 때 스레드 안전성에주의해야합니다.

희망이 도움이됩니다. Tutorial

+0

"서비스 활동 개체 설정"의 의미는 무엇입니까? – TIMEX

+0

서비스에서는 다음과 같이 정적 메서드 smth를 만듭니다. public static void setMainActivity (YourActivityType activity) { YOUR_ACTIVITY = activity; } 을 호출 한 다음 startService() 메서드를 호출하기 전에 작업에서 YourService.setMainActivity (this)를 호출하기 만하면됩니다. –

+0

감사합니다. 그것은 감각을 자극합니다. 그러나 thread-safe는 어떤가? 왜 이것이 안전하지 않을까요? – TIMEX

관련 문제