2011-12-13 2 views
0

우리는 요청을 보내고 서버로부터 응답을 수신하는 하나의 안드로이드 응용 프로그램을 개발했으며 응답에 따라 UI를 업데이트 할 것입니다.이 응용 프로그램은 매우 다양한 유형의 요청을 처리하며 서버를 표시하고 표시합니다 상태 표시 줄의 상태. 이 응용 프로그램은 50 가지가 넘는 다양한 활동을 수행하며 하나의 서비스가 모든 요청/응답과이 서비스에 바인딩 된 모든 활동을 처리하므로 누구나 요청을 보내면 서비스와 바인딩하여 요청을 보내고 응답을 되돌립니다.배경 서비스를 별도의 프로세스로 실행하는 방법은 무엇입니까?

우리가 직면 한 문제는 서비스가 과부하가되는 것처럼 보이기 때문에 요청/응답이 너무 많아 졌기 때문에 응용 프로그램 또한 매우 느려지 게됩니다. 그래서 우리는 android : manifest 파일에서 서비스를위한 프로세스를 포함하여 별도의 프로세스로 서비스를 만들기로하고 이것을 위해 AIDL을 구현하려고합니다. 하지만 각 액티비티가 서비스와 연결하여 textView, handler, activity를 Service register() 메서드를 사용하여 서비스하기 때문에 그리 쉽지 않습니다. AIDL은 기본 유형만 지원하므로 AIDL을 사용할 수 없습니다. 내 의심은 :

입니다. 우리는 별도의 프로세스로 서비스를 만들 수 있습니까? 동일한 애플리케이션에 있어야하며 동일한 APK로 패키징해야합니까?

. AIDL (내가 알고있는 한 AIDL은 기본 유형 만 지원함)을 구현할 때 어떤 객체가 서비스에 전달되고 서비스가 해당 객체와 액티비티를 업데이트 할 때 서비스에 의존하는 위의 상황을 처리하는 방법은 무엇입니까?

. 액티비티는 서비스의 일부 멤버 변수를 사용하므로 AIDL 멤버 변수를 사용하는 방법 (이 멤버 변수는 사용자 지정 개체)으로 변경하면 어떻게됩니까?

몇 가지 예에서 문제를 설명하기 위해 최선을 다 했으므로 유용한 정보를 제공해주십시오.

감사합니다. Piks.

답변

2

텍스트보기에 대한 참조를 보내야합니까? android:process=":remote"을 추가하는 것과 같은 소리는 원하는대로해야하지만, 다른 프로세스에서 서비스를 실행중인 경우 UI 참조를 전달해야한다고 생각하지 않습니다. 서비스의 응답을 기반으로 텍스트보기를 업데이트 할 수 있습니까? 다른 응용 프로그램에서 액세스를 허용하지 않는 경우이 우리가 객체의 목록을 통과했고, 그것이 잘 작동 것입니다 여기 http://developer.android.com/guide/developing/tools/aidl.html

설명

, 당신은 바인더를 사용할 수 있습니다.

+0

우리의 디자인에 따라 우리는 우리의 사용자 정의 상태 표시 줄과 아이콘으로 영역을 업데이트해야합니다. 그래서 우리는 그 서비스에 바인딩 된 누구라도 ref를 전달해야합니다. 하지만 AIDL 접근 방식을 사용하면 서비스에 전달할 수 없으므로 UI에서 스텁을 사용하여 서비스를 제공하고 AIDL은 기본 유형 이외의 서비스를 지원하지 않습니다. – piks

+0

같은 과정에서 서비스를 계속 실행해야하는 것처럼 들릴 수도 있습니다. 원격 프로세스 대 로컬을 사용할 때 성능이 확실히 향상되는지 테스트 했습니까? – Chase

+0

아니요, 안심했지만 안드로이드 개발자 가이드에 따라 별도의 프로세스로 서비스를 실행하면 성능이 향상 될 것입니다. – piks

관련 문제