2012-01-25 3 views
1

백그라운드에서 작업을 수행하기 위해 스레드를 실행하고 싶습니다 (wakelock을 획득 한 서비스에서). 스레드 마무리 작업이 끝나면 서비스가 중지됩니다.wakelock이있는 서비스에서 실행중인 스레드에 wakelock이 필요합니까?

내 문제는 다음과 같습니다

1 내가 서비스에서 시작된 스레드에서 가동 잠금을 요구해야합니까?

2- 서비스를 계속 실행하면서 시스템에서 스레드를 죽일 수 있습니까? 2 내가 내 서비스를 중지 할 수있는 방법 인 경우에 나는 안드로이드에 적용되는 이해

3,

답변

2
  1. WakeLocks은 (내가 서비스에게 그것을 후에 죽을 것이라는 타임 아웃 시간을 제공 할 수 있습니다) 구성 요소 (예 : 서비스, 활동 등) 및 모든 관련 스레드. 따라서 스레드에서 새로운 wakelock을 얻지 않아도됩니다. aquired lock을 전달하고 시작된 스레드에서 isHeld를 호출하여이를 증명할 수 있습니다.

  2. 화면이나 키보드 동작에 관계없이 부분적으로 wockelock을 고려해야합니다. 이것은 서비스이므로 화면이 켜져 있는지 여부는 신경 쓰지 않는다고 가정합니다.

참고가 here을 명시하는 것이 : 당신이 부분 가동 잠금을 보유하는 경우, CPU에 관계없이 모든 타이머, 심지어 사용자가 전원 버튼을 누른 후, 계속 실행됩니다. 다른 모든 wakelocks에서는 CPU가 실행되지만 전원 단추를 사용하여 장치를 절전 모드로 전환 할 수 있습니다.

편집 : 또한 제안한 방식대로 수행 할 수 있지만 만 사용하면 만 배터리 소모를 위해 하위 스레드에서 와키 록을 가져와 해제 할 수 있습니다. 그리고이 작업을 위해 WiFi를 사용해야하는 경우 WiFiLock이 필요할 수도 있습니다.

관련 문제