2010-02-23 7 views
9

나는 안드로이드 전화에 대한 배터리 소모 연구를하고있다. 배터리가 완전히 소모 될 때까지 10 분마다 배터리 체크를 실행하고 싶습니다. 나는 그것을 작동하게하는 데 문제가있다.백그라운드에서 서비스를 영원히 실행하십시오 ..? 안드로이드

첫 번째 시도에서는 서비스 클래스에서 타이머를 사용하고 10 분마다 배터리 검사를 예약합니다. 그러나 곧 화면이 꺼지면 서비스가 일시 중지 된 것으로 나타났습니다.

나는 AlarmService를 사용하려고하는데 알람 호출을 사용하여 10 분마다 서비스를 깨우고 배터리 수준을 확인하고 데이터를 sdcard의 파일에 저장합니다. 그것은 화면을 끕니다. 그러나, 나는 단지 9 시간의 데이터를 가지고있다 ... 그것은 AlarmService가 몇 시간 후에 어떤 시점에서 멈춘 것처럼 보인다. 왜 이런 식인지 모르겠지만 시스템이 메모리 문제 때문에 그것을 죽였습니까?

제 궁금한 점은 이전에 백그라운드에서 실행되는 (영원히 같은) 서비스를 작성한 사람이 있습니까? 어떻게하면 좋을까요? 그리고 샘플 코드에 대해 고맙게 생각합니다.

나는 현재 일부 서비스를 유지하는 데 사용할 수있는 부분적인 잠김 잠금 장치가 있다는 것을 읽고 있습니다. 올바른 방법입니까?

감사합니다. 많은 유용한 답변을 얻을 수 있기를 바랍니다. 내 첫 번째 시도에서

답변

10

, 나는 서비스 클래스의 타이머를 사용하고 배터리 점검마다 10 분을 예약합니다. 그러나 곧 화면이 꺼질 때 서비스가 일시 중지 된 것으로 나타났습니다 .

아마도 WakeLock을 갖고 있지 않았으므로 장치가 잠든 것 같습니다.

AlarmService 몇 시간

차라리 그것을 의심 한 후 어떤 시점에서 중지 것으로 보인다.

그래서 제 질문은, 사람이 전에 에서 (영원히 같은) 배경을 실행하는 일부 서비스 작성했습니다입니까?

영원히 계속되는 서비스를 만들 수 없습니다. "영원히"호출 될 AlarmManager을 통해 예약 된 작업을 생성 할 수 있어야합니다.

나는 현재 내가 서비스를 유지하는 데 사용할 수있는 부분 웨이크 잠금이 있다고 말하는 일부 게시물 을 읽고있다 살아 ..이 을 할 수있는 올바른 방법인가?

"나는 무엇"인지 확실하지 않습니다. 그러나 첫 번째 접근 방식이든에 의해 트리거되는 작업을하든간에 기기를 깨우기를 원한다면 WakeLock을 유지해야합니다.

Here is a projectAlarmManager에 대한 설명과 거의 같지만 배터리 잔량을 확인하지 않고 기기를 깨우려면 WakefulIntentService을 사용합니다.배터리가 완전히 종료 될 때까지이 코드를 실행할 수 없다면 cw-android Google Group에 가입하고 발견 한 내용을보고하면됩니다. 가치있는 정보는 매우

+0

덕분에, 지금은 살아 (타이머 스케줄러를 사용) 내 서비스를 유지하기 위해 부분 웨이크 잠금을 사용하고 있습니다. 잘 작동하는 것처럼 보입니다. 배터리가 완전히 꺼질 때까지 기다렸다가 문제가 없는지 확인하겠습니다. 다시 한번 감사드립니다. – sunocky

+0

서비스가 포 그라운드 서비스 인 경우에도 화면이 꺼지면 서비스가 일시 중지됩니까? – remi

관련 문제