2013-04-05 1 views
0

파일을 모니터링하고 싶은 안드로이드 앱을 개발 중입니다. 그래서 내가하고있는 일은 파일 변경을 모니터 할 파일 관찰자를 등록하는 서비스를 만들었습니다.옵서버와 서비스에 의한 안드로이드의 배터리 소모

일부 이벤트가 발생하면 sd 카드에있는 모든 파일의 메타 데이터를 사용하고 이전 데이터를 새 데이터로 바꾸어 응용 프로그램 데이터베이스를 업데이트합니다.

그래서 저는 관찰자를 서비스 또는 활동에 등록하여 사용자의 배터리를 절약하고 더 나은 선택을해야하는지 알고 싶습니다.

답변

1

사용자가 앱을 사용할 때만 모니터링하려는 경우 활동에 옵서버 코드를 배치하십시오. 모니터링을 항상 수행하려면 서비스를 사용하십시오. 분명히 앱 요구 사항이 여기에서 선택을 결정합니다.

활성 서비스가 더 많은 파일 변경을 감지하고 자주 트리거 될 수 있으므로 배터리를 더 많이 소모 할 수 있습니다.

관찰자가 변경되는 정확한 파일에 대해 알릴 수 있으면 변경 사항 만 업데이트 할 수 있습니다.

또 다른 최적화는 각 업데이트에 대해 데이터베이스를 사용하는 대신 상당한 수의 업데이트가 수집 된 후에 데이터베이스 업데이트를 일괄 적으로 실행하는 것입니다.

1

배터리 수명이 문제가되지해야 그것은 서비스보다는 활동 같은 소리

(당신은 아직도 당신이 확장하는 클래스의 CPU 독립적으로 사용), 그래서 서비스를 선택한 것입니다.

배터리를 절약하기 위해 목표가 무엇인지에 따라 몇 가지 작업을 수행 할 수 있습니다.

  1. FileObserver 당신에게/액세스 변경되는 파일에 대한 직접 경로를 제공해야합니다, 그래서 아마 당신은 SD 카드에있는 모든 파일을 다시 스캔 할 필요가 없다?

  2. 서비스가 변경된 파일의 경로 만 저장하도록하고 서비스에서 더 이상 아무것도하지 않게하십시오. 그런 다음 애플 리케이션 인터페이스를 시작할 때 비동기 작업을 시작하고 백그라운드에서 처리합니다. 그것은 응용 프로그램을 시작한 시간 사이에 변경된 파일의 수에 따라 상당히 빠릅니다.

관련 문제