2013-10-24 2 views
1

어제 AppsWorld London에서 Commonsware 's Mark의 멀티 스레딩 및 깨우기 서비스에 대한 훌륭한 연설을 보았습니다. 일부 상황에서는 WakefulIntentService 또는 WakeFulBroadcastReceiver을 사용하여 앱이 긴 처리를 계속할 수 있고 기기가 잠자기 상태가되지 않도록하는 것이 좋습니다.언제 장치가 절전 모드로 전환됩니까?

기기 화면이 꺼져있을 때 정기적으로 백그라운드 처리를 수행하는 app이 있습니다. 나는 AlarmManager을 사용하여 정기적으로 작업을 수행합니다. 대규모 사용자 기반 (200.000 명의 활성 사용자)이 있기 때문에 사용자가 일부 로그 파일을 보내면 모든 종류의 이상한 사례를 볼 수 있습니다. 다른 사람들과는 달리 알람이 울린 후 일부 장치에서 앱이 작업을 시작한 다음 갑자기 몇 초 또는 몇 분 (로그 파일에 잠시 동안 항목이 없습니다) 아무 작업도 수행하지 않는다는 것을 알 수있었습니다. 전화가 잠자기 상태이기 때문에 이것이라고 가정합니다. 어떤 버그가 있는데, 이는 일부 장치에서만 발생합니다. 예를 들어 삼성 SGS2 +에서는 많이 발생하지만 SGS2, SGS3 또는 SGS4에서는 그렇지 않을 수 있습니다.

내가 궁금한 점은 전화를 잠자기 상태로 둘 때를 결정하는 정책은 무엇일까요? 안드로이드가 결정합니까 아니면 리눅스 수준에서 더 낮습니까? 제조업체에서 얼마나 조정할 수 있습니까? 절전 정책이 Android Compatibility 정의의 일부가 아니어야합니까? 추가 질문 : 여러 수준의 CPU 속도와 같이 잠드는 수준이 있습니까? 아니면 잠자는/잠을 자지 않는 부울인가요?

+3

It 's Mark, 마이크가 아닙니다. :) – Piovezan

답변

4

언제 전화를 잠자기 상태로 둘 것인지 결정하는 정책은 무엇입니까? 아무것도가 WakeLock를 보유하지 않은 경우

일반적으로, 장치는 CPU가 실행 지침을 중지 "기회 중지"모드로 갈 무료입니다.

Android는 Linux 수준에서 결정합니까 아니면 낮습니까?

리눅스 커널은 원래 안드로이드 확장을 통해 현재 재고 커널에 포함되어 있으며, 기회 주의적 일시 중단을 처리합니다. SDK 앱과 같은 Userland 앱은 WakeLock을 사용하여 기회 주의적 일시 중지를 차단할 수 있습니다.

기회주의 일시 중지의 관점에서 커널을 구성하는 방법에 대해서는 잘 모릅니다.

수면 정책이 Android 호환성 정의에 속해서는 안됩니까?

많은 좋은 질문은 전문가 경험을 토대로 어느 정도의 의견을 제시하지만이 질문에 대한 답변은 사실, 참고 문헌 또는 특정 전문 지식보다는 의견을 기반으로하는 경향이 있습니다.

몇 가지 수준의 CPU 속도와 같이 잠 들어있는 수준이 있습니까? 아니면 잠자기/잠을 자지 않는 부울인가요?

Intel SpeedStep 스타일의 CPU 주파수 변경에 비해 Android SDK 응용 프로그램 및 CPU와 관련하여 지금은 "부울 절전/잠자기 않음"입니다. 특정 멀티 코어 CPU는 전력을 절약하기 위해 코어를 켜고 끌 수 있지만 일반적으로 기회 주의적 일시 중단과는 독립적입니다.

관련 문제