우리는 요청을 보내고 서버로부터 응답을 수신하는 하나의 안드로이드 응용 프로그램을 개발했으며 응답에 따라 UI를 업데이트 할 것입니다.이 응용 프로그램은 매우 다양한 유형의 요청을 처리하며 서버를 표시하고 표시합니다 상태 표시 줄의 상태. 이 응용 프로그램은 50 가지가 넘는 다양한 활동을 수행하며 하나의 서비스가 모든 요청/응답과이 서비스에 바인딩 된 모든 활동을 처리하므로 누구나 요청을 보내면 서비스와 바인딩하여 요청을 보내고 응답을 되돌립니다.배경 서비스를 별도의 프로세스로 실행하는 방법은 무엇입니까?
우리가 직면 한 문제는 서비스가 과부하가되는 것처럼 보이기 때문에 요청/응답이 너무 많아 졌기 때문에 응용 프로그램 또한 매우 느려지 게됩니다. 그래서 우리는 android : manifest 파일에서 서비스를위한 프로세스를 포함하여 별도의 프로세스로 서비스를 만들기로하고 이것을 위해 AIDL
을 구현하려고합니다. 하지만 각 액티비티가 서비스와 연결하여 textView, handler, activity를 Service register()
메서드를 사용하여 서비스하기 때문에 그리 쉽지 않습니다. AIDL
은 기본 유형만 지원하므로 AIDL
을 사용할 수 없습니다. 내 의심은 :
입니다. 우리는 별도의 프로세스로 서비스를 만들 수 있습니까? 동일한 애플리케이션에 있어야하며 동일한 APK로 패키징해야합니까?
. AIDL
(내가 알고있는 한 AIDL
은 기본 유형 만 지원함)을 구현할 때 어떤 객체가 서비스에 전달되고 서비스가 해당 객체와 액티비티를 업데이트 할 때 서비스에 의존하는 위의 상황을 처리하는 방법은 무엇입니까?
. 액티비티는 서비스의 일부 멤버 변수를 사용하므로 AIDL
멤버 변수를 사용하는 방법 (이 멤버 변수는 사용자 지정 개체)으로 변경하면 어떻게됩니까?
몇 가지 예에서 문제를 설명하기 위해 최선을 다 했으므로 유용한 정보를 제공해주십시오.
감사합니다. Piks.
우리의 디자인에 따라 우리는 우리의 사용자 정의 상태 표시 줄과 아이콘으로 영역을 업데이트해야합니다. 그래서 우리는 그 서비스에 바인딩 된 누구라도 ref를 전달해야합니다. 하지만 AIDL 접근 방식을 사용하면 서비스에 전달할 수 없으므로 UI에서 스텁을 사용하여 서비스를 제공하고 AIDL은 기본 유형 이외의 서비스를 지원하지 않습니다. – piks
같은 과정에서 서비스를 계속 실행해야하는 것처럼 들릴 수도 있습니다. 원격 프로세스 대 로컬을 사용할 때 성능이 확실히 향상되는지 테스트 했습니까? – Chase
아니요, 안심했지만 안드로이드 개발자 가이드에 따라 별도의 프로세스로 서비스를 실행하면 성능이 향상 될 것입니다. – piks