2012-04-19 3 views
2

나는 wifi를 통해 들어오는 요청을 지속적으로 수신 대기해야하는 응용 프로그램이 있습니다. 백그라운드에서 실행되는 서비스가이 작업을 수행합니다. 그러나이 서비스는 잠시 후 화면이 꺼지면 잠 들어 있습니다.배터리 방전없이 서비스를 깨우는 중

내가 검색 한 솔루션은 AlarmManager를 사용하여 깨어있게합니다. 그러나 이것이 장치의 배터리를 소모 할 것이라고합니다. 이렇게하려면 다른 방법이 있습니까?

예를 들어, Whatsapp 및 Skype와 같은 앱의 기능은 무엇입니까? 그들은 너무 많은 배터리를 죽이지 않는 것처럼 보이지만 지속적으로 서비스를 제대로 운영하고 있습니까?

또한 AlarmManager가 유일한 방법 인 경우 누군가가 튜토리얼 또는 예제를 공유 할 수 있다면 정말 친절합니다.

+0

휴대 전화를 연결 하시겠습니까? – cHao

답변

2

내가 검색 한 것과 솔루션은 도움이되지 않습니다

을 깨어 유지하기 위해 알람 관리기를 사용하는 것입니다. 장치가 잠든 후 소켓 연결이 종료됩니다. 장치의 전원을 계속 켜 두려면 WakeLock 부분에 WifiLock을 더한 부분을 사용해야합니다.

그러나 이것은 배터리를 소모 할 것이라고합니다.

WakeLockWifiLock은 확실히 배터리를 소모합니다.

이렇게하려면 다른 방법이 있습니까?

Wi-Fi를 사용해야하는 경우가 아닙니다.

예를 들어 Whatsapp 및 Skype와 같은 응용 프로그램은 무엇을합니까?

기기가 잠자기를 원할 때 WiFi를 사용하지 않습니다. WiFi 무선 전원이 꺼지면 모바일 데이터가 사용되므로 WifiLock은 필요하지 않습니다. 모바일 데이터의 경우 들어오는 패킷이 장치를 깨우므로 지속적으로 작업하는 것이 아니라 실제로 작업하는 동안 WakeLock 만 필요합니다.

가장 좋은 대답은 C2DM을 사용하도록 전환하는 것입니다.

+3

"일단 WiFi 무선 전원이 꺼지면 모바일 데이터를 사용합니다."- 그러나 전화가 잠 들어 있고 모바일 데이터가 꺼져 있어도 (WiFi가 켜져 있어도) 왜 WhatsApp 메시지를받을 수 있습니까? 감사합니다 – BornToCode

+1

@ BornToCode Gud .. – NitZRobotKoder

+0

@CommonsWare 여기에 무엇을 추가하나요? – NitZRobotKoder

2

사실 자정에 해당하는 서비스가 아니라 장치의 WiFi 장치입니다. HTC와 같은 제조업체 (또는 모든 안드로이드 장치)는 일정 기간 동안 스크린 오프 한 후 WiFi 장치가 대기 상태가되는 장치에서 이러한 종류의 동작을 구현했습니다. 이는 사용하지 않을 때 장치가 배터리를 절약하는 데 도움이됩니다.

관련 문제