Android 배경 스케줄 링 작업 및 절전 상세 설명

I. Handler:
프로 세 스 가 생존 하 는 동안 유효 하 게 사 용 됩 니 다.Google 은 공식 적 으로 추천 합 니 다.
간단 하고 쓰기 쉽다.
안정 적 이 고 효율 적 이다.
II. AlarmManager:
시스템 등급 의 알 람 서 비 스 를 이용 하 다.
정확 한 정시 임무 가 필요 하 다 면,이것 이 최선 이다.
1.기능
지정 한 작업 을 실행 하거나 반복 합 니 다.
정확 한 시간 간격 을 지정 하여 임 무 를 수행 합 니 다.
2.특징
등록 후 자신의 응용 프로 세 스 가 존재 하 든 구성 요소 가 존재 하 든 상 관 없 이 정상적으로 실 행 됩 니 다.
모든 등 록 된 알 람 서 비 스 는 시스템 재 부팅 후 리 셋 되 므 로 보증 작업 이 필요 하 다 면 RECEIVE 등록 이 필요 합 니 다.BOOT_COMPLETE,재 부팅 후 알 람 서비스 에 다시 작업 을 등록 할 수 있 도록 보증 합 니 다.
AlarmManager 는 PendingIntent 를 처리 하기 때문에 보통 서 비 스 를 시작 하여 업 무 를 처리 합 니 다.
3.비고
정 부 는 네트워크 요청 과 관련 된 AlarmManager 사용 을 권장 하지 않 습 니 다.
전력 손실 을 고려 하여 비 특수 한 상황 에서 대략적인 시간 방식 을 사용 하 는 것 을 권장 합 니 다.그러면 안 드 로 이 드 는 가능 한 한 몇 가지 임 무 를 한데 묶 어 실행 시 켜 잦 은 휴대 전 화 를 불 러 일 으 키 는 것 을 방지 할 것 입 니 다.
III. Job Scheduler:
JobScheduler 공식 문서네트워크 관련 임 무 를 Job Scheduler 에 맡 기 는 것 을 권장 합 니 다
  • 시스템 이 재 개 된 후에 도 작업 은 Job Scheduler 에 남아 있 습 니 다
  • Api 21 이상 의 시스템 에서 만 지원
    1.우세
    전 기 를 더욱 절약 하 다.
    더 효율 적
    더 사용 하기 쉽다
    2.특정한 장면 에서 명확 하 게 실행(JobInfo):
    여러 개의 임 무 를 한 장면 에 포장 하여 수행 하기 때문에 약간 지연 되 었 습 니 다.또한 기한 이 있 으 며,기한 내 에 특정 상황 을 만족 시 키 지 못 하면 시스템 은 이 임 무 를 대열 에 넣 고 나중에 수행 할 것 이다.
    설비 충전 시작여가
    네트워크 연결
    네트워크 차단
    3.인터페이스 종류
    
    boolean onStartJob(JobParams params) {
      //     
      //               ,               
      // jobFinished(JobParameters params) //                       
      // return                
    }
    
    void onStopJob(){
      //       ,         。
    }
    
    IV. GCM
    GCM 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.모든 응용 프로그램 에 대해 네트워크 접근 을 거부 합 니 다
  • 모든 JobScheduler,Sync-Adapter,AlarmManager 의 작업 이 창 으로 연 기 됩 니 다
  • 시스템 은 응용 프로그램 에서 온 모든 WAKE-LOCK 를 거부 합 니 다
  • 모든 와 이 파이 와 GPS 스 캔 을 중단 합 니 다
  • 위치 사건 을 줄 이 고 설비 에서 와 이 파이 핫 이 슈 를 검 측 합 니 다

  • Light Doze Mode
    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/
    이상 은 안 드 로 이 드 백 스테이지 스케줄 링 임무 와 전 기 를 절약 하 는 자료 입 니 다.안 드 로 이 드 애플 리 케 이 션 을 개발 하 는 친구 가 참고 하 실 수 있 습 니 다.본 사이트 에 대한 지원 에 감 사 드 립 니 다!

    좋은 웹페이지 즐겨찾기