문제

두 가지 방법으로 사용하는 믹스 케이스 IDL 서비스가 있습니다.

  1. 이 서비스는 스레드를 스폰하고 네트워크 호출을 통해 활동을 대신하여 XML 컨텐츠를 가져옵니다. 콜백 메소드를 정의하는 클라이언트의 IDL을 통해 콘텐츠가 활동으로 돌아갑니다.
  2. 사용자가 알림 옵션을 선택하면 서비스는 반복적으로 실행되는 타이머를 생성하고 도구 모음 알림을 만듭니다. 또한 컨텐츠를 캐시하여 활동이 업데이트를 요청하면 다른 네트워크 통화 대신 캐시에서 제공됩니다.

그래서 내 질문입니다

  1. 시나리오 #1의 경우 활동에서 배경 스레드를 직접 작성하는 대신 네트워크 통화에 서비스를 사용하는 데 비용이 얼마입니까?
  2. #2의 경우 - AlarmManager로 구현을 변경하는 것이 좋습니다. Taskiller로 프로세스를 죽일 때 서비스가 사망하고 다시 시작되지 않으면 AlarmManager-Base 작업이 복구 가능성이 더 좋을까요?
도움이 되었습니까?

해결책

시나리오 #1의 경우 활동에서 배경 스레드를 직접 작성하는 대신 네트워크 통화에 서비스를 사용하는 데 비용이 얼마입니까?

나는 이것이 "IDL 서비스"라고 말했기 때문에 이것이 원격 서비스라고 부르는 것이라고 가정합니다. AIDL을 사용하여 프로세스 경계에서 사용되는 인터페이스를 정의하고 있습니다.

이 경우 비용은 두 번째 프로세스의 경우 여러 MB RAM과 IPC 오버 헤드에 대한 약간의 CPU 시간입니다. "CPU 시간의 비트"는 얼마나 자주 호출되는지에 달려 있습니다.

#2의 경우 - AlarmManager로 구현을 변경하는 것이 좋습니다.

일반적으로 그렇습니다. 이상적으로는 서비스가 가능한 한 적은 메모리에 있습니다.

Taskiller로 프로세스를 죽일 때 서비스가 사망하고 다시 시작되지 않으면 AlarmManager-Base 작업이 복구 가능성이 더 좋을까요?

"작업 킬러"앱은 예정된 경보를 포함하여 모든 것을 죽일 API (Dianne Hackborn의 말)를 남용하는 경향이 있기 때문에. 현재, 내가 알고있는 "작업 살인자"에 대한 신뢰할 수 있고 효율적인 방어는 없습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top