안드로이드 - 배경 서비스 사용
-
06-07-2019 - |
문제
두 가지 방법으로 사용하는 믹스 케이스 IDL 서비스가 있습니다.
- 이 서비스는 스레드를 스폰하고 네트워크 호출을 통해 활동을 대신하여 XML 컨텐츠를 가져옵니다. 콜백 메소드를 정의하는 클라이언트의 IDL을 통해 콘텐츠가 활동으로 돌아갑니다.
- 사용자가 알림 옵션을 선택하면 서비스는 반복적으로 실행되는 타이머를 생성하고 도구 모음 알림을 만듭니다. 또한 컨텐츠를 캐시하여 활동이 업데이트를 요청하면 다른 네트워크 통화 대신 캐시에서 제공됩니다.
그래서 내 질문입니다
- 시나리오 #1의 경우 활동에서 배경 스레드를 직접 작성하는 대신 네트워크 통화에 서비스를 사용하는 데 비용이 얼마입니까?
- #2의 경우 - AlarmManager로 구현을 변경하는 것이 좋습니다. Taskiller로 프로세스를 죽일 때 서비스가 사망하고 다시 시작되지 않으면 AlarmManager-Base 작업이 복구 가능성이 더 좋을까요?
해결책
시나리오 #1의 경우 활동에서 배경 스레드를 직접 작성하는 대신 네트워크 통화에 서비스를 사용하는 데 비용이 얼마입니까?
나는 이것이 "IDL 서비스"라고 말했기 때문에 이것이 원격 서비스라고 부르는 것이라고 가정합니다. AIDL을 사용하여 프로세스 경계에서 사용되는 인터페이스를 정의하고 있습니다.
이 경우 비용은 두 번째 프로세스의 경우 여러 MB RAM과 IPC 오버 헤드에 대한 약간의 CPU 시간입니다. "CPU 시간의 비트"는 얼마나 자주 호출되는지에 달려 있습니다.
#2의 경우 - AlarmManager로 구현을 변경하는 것이 좋습니다.
일반적으로 그렇습니다. 이상적으로는 서비스가 가능한 한 적은 메모리에 있습니다.
Taskiller로 프로세스를 죽일 때 서비스가 사망하고 다시 시작되지 않으면 AlarmManager-Base 작업이 복구 가능성이 더 좋을까요?
"작업 킬러"앱은 예정된 경보를 포함하여 모든 것을 죽일 API (Dianne Hackborn의 말)를 남용하는 경향이 있기 때문에. 현재, 내가 알고있는 "작업 살인자"에 대한 신뢰할 수 있고 효율적인 방어는 없습니다.
제휴하지 않습니다 StackOverflow