2014-01-16 2 views
7

나는 안드로이드 원격 서비스를 내 클라이언트 앱의 일부로 작성하는 장단점을 알아 내려고하고있다. (android : process = ": remote"를 사용하여) 별도의 서비스 앱.앱 내 안드로이드 원격 서비스 대 별도 앱

두 경우 모두 서비스가 자체 프로세스로 실행되고 자체 힙 등이 있습니다. 그러나 자체 응용 프로그램 샌드 박스가 있으므로 별도의 응용 프로그램을 만들 때는 약간의 차이가 있습니다. 시나리오에 따라 사용법과 선호하는 접근법에 대한 많은 예를 발견했지만 내부적 인 기술적 세부 사항을 이해하려고합니다.

좋은 정보 출처가 있습니까?

편집 : 서비스 및 클라이언트 프로세스가 동일한 응용 프로그램에서 실행되는 경우 응용 프로그램 개체/컨텍스트에 어떤 영향을 미칩니 까? 프로세스 중 하나에서 덮어 쓰기가됩니까? 또는 각 프로세스에 대해 하나의 응용 프로그램의 일부인 것으로 올바르게 들리지 않는 응용 프로그램 개체가 두 개 있습니다.

+0

배포는 두 가지 프로세스로 하나의 앱을 유지하는 것의 가장 큰 장점 중 하나입니다. 앱 스토어에 배포하는 경우 다른 방법으로는하지 않습니다. 왜 원격 서비스가 필요합니까? –

+0

@Mikedg 그렇습니다. 배포는 한 프로세스에서 두 프로세스를 모두 유지하려는 이유 중 하나입니다.하지만 원격 VS 로컬 서비스가 필요한 이유가 아니라 오히려 전반적인 내부 동작을 이해하려고합니다. 응답의 코멘트 아래에. – pree

+0

내 질문도 수정되었습니다. – pree

답변

6

귀하의 질문에 이전에 부분적으로 답변되었습니다.

을하지만 당신은 여전히 ​​배경에 실행 뭔가를 가지고있는 생각에 대해 생각한다면, 당신은이 참조에보고 할 수 있습니다 : 여기 확인

백그라운드에서 실행되는 것이 분명히 좋은 옵션이 아닙니다. 어떤 이유로 든 정말로 필요하지 않으면. 따라서 사용자의 의지에 의해 의식적으로 활성화되지 않은 불필요한 백그라운드 서비스로 사용자를 괴롭히지 않도록주의하십시오. 이 경우 별도의 앱을 만들거나 사용자가 활성화 할 수있는 기능을 만드는 것이 더 스마트하고 안전한 길입니다.

remote processes (간단히 Context.startService를 사용하여 명령을 보내는 것 이상)에서 클라이언트와의 복잡한 통신을 수행 할 수있는 서비스를 작성할 수 있어야하는 경우, 전체 쓰기 대신 Messenger 클래스를 사용할 수 있습니다 AIDL 파일. 원격 서비스 만 필요한 경우에는 tutorial을 따라야합니다.

+0

앱에 원격 서비스가있는 경우 앱이 시작되면 서비스 개체가 생성되고 서비스가 시작될 때, 그렇다면 우리는 Dalvik VM을 두 개의 프로세스와 하나의 응용 프로그램 개체로 실행하는 응용 프로그램을 실행하고 프로세스 시작에 따라 시간이 지남에 따라 변경 될 수 있습니다. 처음에는 시작했기 때문에 조금 이상하고 예기치 않은 것이 아닙니까? 응용 프로그램 객체를 사용하는 활동 (getApplicationObject(). startService())을 사용한 원격 서비스. 응용 프로그램 객체가 덮어 쓰기되면 전체 응용 프로그램 환경이 엉망이되지 않습니까? – pree

+0

@pree 방금 방금 내 대답을 업데이트했습니다. 확인하십시오. – Avanz

+0

나는 이미 이전에 그 링크를보고 로컬/원격 모든 유형의 서비스와 함께 놀았다.내가 이해하려고 노력하는 것은 앞서 방금 설명한 것처럼 클라이언트 응용 프로그램 자체의 일부인 원격 서비스의 경우 Context/application 객체의 동작입니다. – pree