Android 배경 스케줄 링 작업 및 절전 상세 설명
7406 단어 Android백 스테이지 퀘 스 트전 기 를 아끼다
프로 세 스 가 생존 하 는 동안 유효 하 게 사 용 됩 니 다.Google 은 공식 적 으로 추천 합 니 다.
간단 하고 쓰기 쉽다.
안정 적 이 고 효율 적 이다.
II. AlarmManager:
시스템 등급 의 알 람 서 비 스 를 이용 하 다.
정확 한 정시 임무 가 필요 하 다 면,이것 이 최선 이다.
1.기능
지정 한 작업 을 실행 하거나 반복 합 니 다.
정확 한 시간 간격 을 지정 하여 임 무 를 수행 합 니 다.
2.특징
등록 후 자신의 응용 프로 세 스 가 존재 하 든 구성 요소 가 존재 하 든 상 관 없 이 정상적으로 실 행 됩 니 다.
모든 등 록 된 알 람 서 비 스 는 시스템 재 부팅 후 리 셋 되 므 로 보증 작업 이 필요 하 다 면 RECEIVE 등록 이 필요 합 니 다.BOOT_COMPLETE,재 부팅 후 알 람 서비스 에 다시 작업 을 등록 할 수 있 도록 보증 합 니 다.
AlarmManager 는 PendingIntent 를 처리 하기 때문에 보통 서 비 스 를 시작 하여 업 무 를 처리 합 니 다.
3.비고
정 부 는 네트워크 요청 과 관련 된 AlarmManager 사용 을 권장 하지 않 습 니 다.
전력 손실 을 고려 하여 비 특수 한 상황 에서 대략적인 시간 방식 을 사용 하 는 것 을 권장 합 니 다.그러면 안 드 로 이 드 는 가능 한 한 몇 가지 임 무 를 한데 묶 어 실행 시 켜 잦 은 휴대 전 화 를 불 러 일 으 키 는 것 을 방지 할 것 입 니 다.
III. Job Scheduler:
JobScheduler 공식 문서네트워크 관련 임 무 를 Job Scheduler 에 맡 기 는 것 을 권장 합 니 다
1.우세
전 기 를 더욱 절약 하 다.
더 효율 적
더 사용 하기 쉽다
2.특정한 장면 에서 명확 하 게 실행(JobInfo):
여러 개의 임 무 를 한 장면 에 포장 하여 수행 하기 때문에 약간 지연 되 었 습 니 다.또한 기한 이 있 으 며,기한 내 에 특정 상황 을 만족 시 키 지 못 하면 시스템 은 이 임 무 를 대열 에 넣 고 나중에 수행 할 것 이다.
설비 충전 시작여가
네트워크 연결
네트워크 차단
3.인터페이스 종류
boolean onStartJob(JobParams params) {
//
// ,
// jobFinished(JobParameters params) //
// return
}
void onStopJob(){
// , 。
}
IV. GCMGCM Netwrok Manager 는 실제 Api 21 이상 에서 도 Job Scheduler 를 사 용 했 으 며 이전 버 전에 서 는 Google Play Service 를 사 용 했 습 니 다.
현 Job Scheduler 의 기능.
GCM NetworkManager 에 서 는 절약 에 유리 한 규칙 이 많다.
1.인터페이스 종류
OneoffTask.Builder()와 PeriodicTask.Builder()를 통 해 작업 을 만 듭 니 다.
GcmTask Service\#onRunTask(Task Params params)는 배경 스 레 드 에서 실 행 됩 니 다.
트리거 필드 는 JobInfo 와 같 습 니 다.
V. Sync Adapter
Transferring Data Using Sync Adapters
일반적으로 비교적 많은 데 이 터 를 동기 화 하 는 데 쓰 인 다.
아마도 이것 은 Job Scheduler API 21 전의 비교적 좋 은 대체 품 일 것 이다.
서버 와 로 컬 장치 의 데 이 터 를 동기 화 합 니 다.
1.특징
빅 데이터 동기 화 에 유리 하 다Google Play 서비스 에 의존 할 필요 가 없습니다4.567917.전기 절약 이 안정 적 이다4.567917.사용 자 는 설정 에서 동기 화 시간 을 주동 적 으로 조회 하고 동기 화 를 촉발 하거나 동기 화 를 닫 을 수 있 습 니 다API 7 이상.
2.비고
계 정 을 연결 할 수 있 습 니 다.
ContentProvider 를 제공 하고 서버 와 동기 화 된 데이터 베 이 스 를 제공 합 니 다.
네트워크 가 존재 할 때 만 동기 화 를 촉발 합 니 다.
2.일정한 필드 에서 동기 화 발동
가능 한 한 모든 동기 화 작업 을 한 주기 에 수행 하여 가능 한 한 휴대 전화 전 기 를 절약 하도록 한다.
서버/장치 엔 드 데이터 변화.
휴대폰 방치 시.
하루
동기 화 에 실패 하면 동기 화 에 실패 한 대기 열 에 넣 고 가능 한 한 동기 화 합 니 다.
VI. Doze Mode
Deep Doze Mode
API 23 에 서 는 직접 Doze Mode 라 고 부른다.
Target SDK 가 얼마 든 기기 가 Android API 23 이상 이면 이 모드 를 사용 합 니 다.
1.특징
사용자 가 장 비 를 떠 난 후 가능 한 한 휴대 전화 전력 소 모 를 줄 이 는 것 이 목적 이다.
개발 자 는 특별한 어 울 리 지 않 아 도 되 지만 위 에서 언급 한 모든 Schedule 방식(Job Scheduler,AlarmManager,Syncs Adapter)에 영향 을 줄 수 있 습 니 다.
이동 창 포장 작업 을 통 해 요청 하고 간격 이 길 어 집 니 다.
2.입장 조건
다음 과 같은 상황 을 동시에 만족 시 킨 후 일정 시간(약 30 분)이후 에 효력 이 발생 합 니 다.
핸드폰 충전 안 돼 요.
화면 이 꺼 짐
휴대 전화 각 방면 의 상태 가 안정 을 유지 하 다.
탈퇴 조건 은 진입 조건 중 임의의 조건 상태 가 변 하 는 것 이다.
3.두 개의 처리 창 사이 의 휴대 전화 상태
4.567917.모든 응용 프로그램 에 대해 네트워크 접근 을 거부 합 니 다
API 24 이상 에서 이 모드 를 사용 합 니 다.
1.특징
Deep Doze Mode 보다 패키지 작업 의 빈도 가 높 습 니 다.
2.입장 조건
동료 가 다음 과 같은 상황 을 만족 시 킨 후 일정 시간(약 몇 분)후에 효력 이 발생 합 니 다.
핸드폰 충전 안 돼 요.
화면 이 꺼 짐
에 처 하 다,...
또는 다음 조건:
에 처 하 다,...
화면 닫 기
핸드폰 충전 안 돼 요.
휴대 전 화 는 더 이상 안정 상태 에 있 지 않다.
3.탈퇴 조건
화면 열기
휴대폰 충전 시작
Deep Doze 모드 로 들 어가 기
4.두 개의 처리 창 사이 의 휴대 전화 상태
모든 응용 프로그램 에 네트워크 접근 을 거부 합 니 다.
모든 JobScheduler 와 Sync-adapter 의 작업 이 창 으로 연 기 됩 니 다.
AlarmManager 의 작업 에 영향 을 주지 않 지만 네트워크 접근 이 없습니다.(작업 이 네트워크 접근 이 필요 하 다 면 JobScheduler 나 Sync-Adapter 를 사용 하여 작업 창 에서 네트워크 를 실행 할 수 있 도록 합 니 다)
중단/피하 기 Doze
다음 과 같은 모든 상황 에서 Google 정 부 는 전기 절약 규칙 이 중단 되 었 기 때문에 특별한 상황 에 서 는 사용 하지 말 것 을 권장 합 니 다.
1. AlarmManager
정확 한 시간 이 필요 한 이벤트 지정:setAndAllow While Idle(),setExactAndAllow While Idle().그러나 비 창 기간 에는 네트워크 접근 제한 이 없 으 며 10s 의 시간 만 처리 합 니 다.
알 람 이벤트 알 람 관리자.setAlarmClock()을 지정 한 이 벤트 는 알 람 이 끝나 기 전에 시스템 을 Doze 모드 에서 잠시 완전히 종료 시 키 고 이 벤트 를 정상적으로 처리 합 니 다.시스템 은 이 알 람 이 벤트 를 돋 보이 게 하기 위해 status bar 에 물리 알 람 의 icon 을 표시 합 니 다.
2. FCM/GCM
(Firebase Cloud Messaging,이전 버 전에 서 는 Google Cloud Messaging(GCM)이 라 고 불 렸 습 니 다.)
FCM/GCM 에서 높 은 우선 순위 의 작업 설정("priority":"high")의 메 시 지 는 Doze 모드 에서 정상적으로 도착 할 수 있 습 니 다.
3.화이트 리스트
화이트 리스트 공식 문서
공식 적 으로 화이트 리스트 에 가입 하 는 상황 을 고려 할 것 을 건의 하 다.
화이트 리스트 가입 을 자발적으로 요청 하고 사용자 가 같은 후에 화이트 리스트 에 가입 합 니 다.
사용자 도 자발적으로 앱 을 화이트 리스트 에서 삭제 하거나 추가 할 수 있다.
응용 프로그램 은 isIgnoringBattery Optimizations()를 통 해 화이트 리스트 에 있 는 지 알 수 있 습 니 다.
화이트 리스트 의 응용 프로그램 은 네트워크 와 유효한 WAKELOKE 를 가 질 수 있 지만 다른 Doze 의 제약 은 여전히 존재 합 니 다(예 를 들 어 연 기 된 Job Scheduler,Syncs-Adapter,AlarmManager).
하얗다
명단 요청 방법:
ACTION 통과 하기IGNORE_BATTERY_OPTIMIZATION_SETTINGS 는 전력량 최적화 페이지 를 열 면 사용 자 는 검색 을 통 해 응용의 전력량 최 적 화 를 닫 고 화이트 리스트 에 가입 할 수 있다.
우선 REQUEST 소지IGNORE_BATTERY_OPTIMIZATIONS 권한,그리고 IntentACTION 시작 을 통 해REQUEST_IGNORE_BATTERY_OPTIMIZATIONS 는 Dialog 를 직접 꺼 서 사용자 가 응용 프로그램의 전력 을 최적화 시 켜 화이트 리스트 에 추가 합 니 다.
4.특수상황
프론트 서비스(foreground-service)는 Doze 모드 의 영향 을 받 지 않 습 니 다.
Doze 모드 테스트
Google 은 대기 모드 를 통 해 Doze 모드 로 들 어 갈 필요 가 없 는 adb 명령 을 제공 합 니 다.
1.Doze 모드 진입
Android Nougat Devloper Preview 4 이상 버 전의 장 치 를 준비 합 니 다.
그것 을 컴퓨터 에 연결 하 다.
adb 셸 dumpsys battery unplug 명령 을 통 해 장 치 를 연결 되 지 않 은 충전 모드 로 들 어가 게 합 니 다.
adb 셸 dumpsys deviceidle step[light|deep]를 통 해 Doze 모드 에 강제로 들 어 갑 니 다.
Doze 모드 를 종료 하고 핸드폰 을 정상화 하려 면 충전 모드 를 복원 해 야 합 니 다:adb shell dumpsys battery reset.
2.기타 명령
장치 상태 adb 셸 dumpsys deviceidle get[light|deep|force|screen|charging|network]을 가 져 옵 니 다.
Android Nougat Developer Preview 4 에서 Doze 모드 의 상태 주 기 는 다음 과 같 습 니 다.
Light: ACTIVE -> IDLE -> IDLE_MAINTENANCE -> OVERRIDE
Deep: ACTIVE -> IDLE_PENDING -> SENSING -> LOCATING -> IDLE -> IDLE_MAINTENANCE
Choosing the Right Background Scheduler in Android
Diving into Doze Mode for Developers
© 2012 C 2016, Jacksgong(blog.dreamtobe.cn). Licensed under the Creative Commons Attribution-NonCommercial 3.0 license (This license lets others remix, tweak, and build upon a work non-commercially, and although their new works must also acknowledge the original author and be non-commercial, they don't have to license their derivative works on the same terms). http://creativecommons.org/licenses/by-nc/3.0/
이상 은 안 드 로 이 드 백 스테이지 스케줄 링 임무 와 전 기 를 절약 하 는 자료 입 니 다.안 드 로 이 드 애플 리 케 이 션 을 개발 하 는 친구 가 참고 하 실 수 있 습 니 다.본 사이트 에 대한 지원 에 감 사 드 립 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.