2010-06-24 10 views
1

Google I/O 중에 Virgil Dobjanschi talk에서 그는 Services을 사용하여 가져 오기 작업을 수행 한 다음 콜백을 사용하여 Activity에 완료 사실을 알립니다. 그는이 콜백을 구현하는 방법에 대한 구체적인 내용을 다루지 않았으며 어디서나이 주제에 도움이되는 것을 찾지 못했습니다.Android 및 RESTful 서비스

나는 당신이 바인딩을 전혀 구현할 필요가 없다고 말했다고 생각하십니까?

실마리가 있습니까?

답변

1

체크 아웃 통신하기 위해 AIDL을 사용하여 AB를 이야기하고 생각합니다. CommonsWare의 대답에서 옵션 # 2를 사용합니다.

+0

감사합니다. 그 응용 프로그램이 그의 방법을 사용한다는 것을 결코 깨닫지 못했습니다. 그가하는 일은 내가 할 수있는 것조차 알지 못하는 가려 짐 (parceable)으로서 리스너 인터페이스를 전달하는 것입니다. – alexanderblom

8

옵션 # 1은 ServiceBroadcastReceiver 통해 Activity 어획량 registerReceiver() 의해 등록 Intent 방송을 송신한다.

옵션 # 2 : Activity에서, Service에 결합되어있는 경우는 Activity이 작업이 완료되면 Service가 호출 Service에 리스너를 통과해야합니다.

옵션 # 3 : Service 많이하지 않지만, ContentProvider 전화 notifyChange() 때 데이터에 Activity 및/또는 그 Cursor을 통해 다시 리플 수있는 데이터 변경.

옵션 # 4 : 싱글 톤이므로 피해야합니다.

...

옵션 # 237 : ServiceActivity에 페덱스를 통해 편지를 보냅니다. 그들은 트위터 응용 프로그램을 오픈 소스를 공개하면 :-)

...

모든이가 말했다되고, 당신은 트위터 응용 프로그램이 무엇을하는지 확실히 알 수 있습니다.

+0

응답에 따라 Google I/O 앱은 리스너를 가벼운 추가 자로 전달합니다. 두 번째 옵션으로 당신이 의미했던 것입니까, 아니면 완전한 바인딩을 의미합니까? – alexanderblom

+0

아니요, 옵션 # 2는 전체 바인딩입니다. 옵션 ... 음 ... # 74는 'ResultReceiver'를 사용하고있었습니다. 솔직히, 나는 그 선택에 놀랐다. 왜냐하면'ResultReceiver'는 AIDL을 사용하고, 우리는 오버 헤드 문제 때문에 로컬 작업을 위해 반복적으로 사용하지 말라고 들었다. 아마도 내가 알지 못하는 'ResultReceiver'에 대해 특별한 것이있을 것입니다. – CommonsWare

+0

신속한 후속 조치 : AIDL은 로컬 액세스에 오버 헤드를 추가하지 않습니다. 클라이언트와 서버가 동일한 프로세스에 있으며 직접 경로를 지정합니다. 따라서 'ResultReceiver'에 대한 두려움은 근거가 없습니다. 자세한 내용은 다음 스레드를 참조하십시오. http://groups.google.com/group/android-developers/browse_thread/thread/79049af16fde46e8 – CommonsWare

0

는 나는 그들이 ... 활동 & 서비스 사이에 그것은 그가 언급 한 패턴을 사용하는 Google I/O 2010 app.