2013-09-05 2 views
0

서비스를 시작하는 파일과 다른 Java 파일에있는 서비스가 있습니다.서비스에서 응용 프로그램으로 개체 보내기 - 처리기

간단히하기 위해 하나의 Main.java와 하나의 ServiceFile.java를 호출 해 보겠습니다.

main은 onCreate()에서 서비스 (ServiceFile.java)를 시작하고 응용 프로그램의 수명 동안 서비스가 계속 실행됩니다. 이 서비스의 기능은 별도의 스레드에 네트워크 작업 을 수행 한 다음 데이터를받은 후 Vehicle 개체를 생성하는 것입니다.

나는 내가 구글 개발자들에 대한 Handlers을 읽고 그것이 내가 필요한 것 같다 Main.java

에 ServiceFile.java에서이 객체를 얻을 필요가있다. 그러나 Handler의 구현을 찾을 수있는 모든 예제는 다른 스레드가 동일한 Java 파일에있는 예제입니다. 이렇게 파일간에 메시지를 보내려면 어떻게해야합니까?

나는 핸들러에 대한 참조를 제공하기 위해 putExtra를 사용하는 아이디어를 가지고 있지만 처리기 parcelable or serializable.

답변

2

하지 않기 때문에 그 난 당신의 서비스에 결합 할 수 있다면 더 좋은 방법이 될 것이라고 생각 작동하지 않을 것입니다 당신의 두 번째 작업을 수행 한 다음 Binder을 사용하여 서비스에서 개체를 가져옵니다. 이 답변 here

를 살펴 보자 기본적으로 무엇인지 그 대답에서 수행되고, 당신은 따라서 상기 Service에서 IBinder하고 (이미 실행 됨) Service 자체에 대한 핸들을 얻는다. 이제는 서비스에 대한 핸들을 얻었으므로 서비스에서 직접 VO를 얻을 수 있습니다.

+0

그런데 문제는 내가 서비스를 결합하고 싶지 않아, 내가 원하는이 서비스가 계속 실행되도록해야합니다. 방금 얻었던 아이디어는 Main.java에서 getVehicle (Vehicle v)와 같은 정적 (static?) 메소드를 호출 한 다음 그 작업을 수행하는 것입니다. – benzabill

+0

'Service '에 바인딩하는 것이 끊임없이 실행되지 않는다는 것을 의미하지는 않습니다. 일반적으로 서비스를 시작한 다음 필요에 따라 작업을 시작하는 방식으로 서비스를 시작하십시오. 뮤직 앱이 어떻게 이것을한다고 생각하십니까? 서비스는 끊임없이 실행되며 Activity는 필요할 때마다 Activity에 바인딩됩니다. 예를 들어 재생/일시 중지 버튼을 탭하면 활동이 서비스에 바인딩됩니다. – Varun

+0

충분히 명확하게 말하면, 나는 묶인 서비스에 대해서 말하고있는 것이 아니다. 이러한 종류의 서비스는 무기한으로 백그라운드에서 실행되지 않습니다. 이미 말하고있는 것은 이미 실행중인 서비스에 바인딩하는 것입니다. 차이를 보길 바랍니다. – Varun

0

당신은 안드로이드 개발자 페이지에서 필요한 작업의 유형 구현에 대한 완전한 가이드가 있습니다 :

이 링크

: Bound Service

관련 문제