Android 에서 알 람 을 사용 하 는 방법 소결

2650 단어 androidalarm
머리말
안 드 로 이 드 에 서 는 알 람 매니저 를 통 해 알 람 을 설정 할 수 있 습 니 다.지정 한 시간 에 서 비 스 를 시작 하여 사건 을 처리 합 니 다.
예 를 들 어 몇 시간 마다 네트워크 데 이 터 를 끌 어 내 거나 매일 8 시 에 사용자 에 게 알 리 는 등 이다.
AlarmManager 를 사용 할 때 다음 과 같은 몇 가지 점 을 주의 하면 이 기능 을 더욱 잘 사용 하 는 데 도움 이 될 것 입 니 다.
촉발 시간 랜 덤 증가
알 람 이 실행 하 는 작업 에 네트워크 요청 이 포함 되 어 있 으 면 이 트리거 시간 에 무 작위 성 을 추가 하 는 것 을 권장 합 니 다.
아침 8 시 에 일기 예 보 를 조회 하 는 네트워크 요청 을 한다 고 가정 하면 무 작위 성 을 증가 하지 않 습 니 다.그러면 8 시 이 시각 에 서버 는 대량의 요청 을 받 아 서버 의 압력 이 너무 커서 장치 가 충분 하면 서버 가 정상적으로 서 비 스 를 제공 하지 못 할 수도 있다.
따라서 랜 덤 성 을 증가 하고 이 요청 들 을 서로 다른 트리거 시간 으로 분산 시 킵 니 다.예 를 들 어 일부 사용자 의 트리거 시간 은 7 시 이 고 일부 사용자 의 트리거 시간 은 8 시 입 니 다.필요 에 따라 더 많은 무 작위 시간 구간 으로 분산 시 킬 수 있다.
이렇게 하면 이러한 네트워크 요청 시간 을 효과적으로 놓 치고 서버 의 압력 을 늦 추어 서버 가 더욱 빠 른 서 비 스 를 제공 할 수 있다.
setRepeating()대신 setInexactRepeating()사용setInexactRepeating()을 사용 할 때 시스템 은 같은 시간 에 여러 개의 알 람 을 터치 하여 장치 의 각성 횟수 를 효과적으로 줄 일 수 있다.
안 드 로 이 드 4.4 부터 시작 되 기 때문에 알 람 트리거 시간 은 더 이상 정확 하지 않다.
따라서 전력 소비량 을 줄 이기 위해 서 는 정확 한 시간 촉발 이 꼭 필요 하지 않 은 상황 에서 사용setInexactRepeating()을 권장 한다.
ELAPSED_REALTime 과 RTC
ELAPSED_REALTIME 은 시스템 을 기반 으로 지금까지 시 작 된 시간 이기 때문에 ELAPSEDREALTime 은 앞으로 얼마나 걸 릴 지 알 람 을 설정 하 는 데 적합 합 니 다.
예 를 들 어 30 분 후에 촉발 되 기 를 바 라 는 등 이다.

alarmMgr.setInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
  AlarmManager.INTERVAL_HALF_HOUR,
  AlarmManager.INTERVAL_HALF_HOUR, alarmIntent);
//         
alarmMgr.set(AlarmManager.ELAPSED_REALTIME_WAKEUP,
  SystemClock.elapsedRealtime() + 60 * 1000, alarmIntent);
RTC 는 현재 시간 대의 정확 한 시간 을 기반 으로 하기 때문에 어느 날 까지 정확 한 시간 에 촉발 해 야 하 는 알 람 을 설정 하 는 데 적합 하 다.
예 를 들 어 오후 2 시 에 촉발 되 기 를 바 랍 니 다.

//   calendar   14 
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, 14);
//       ,          
alarmMgr.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
  AlarmManager.INTERVAL_DAY, alarmIntent);
wakeup 버 전과 비 wakeup 버 전의 차이 점
wakeup 버 전:
  • RTC_WAKEUP
  • ELAPSED_REALTIME_WAKEUP
  • 비 wakeup 버 전:
  • RTC
  • ELAPSED_REALTIME
  • 그들의 차 이 는 장치 스크린 이 꺼 진 상태 에서 의 반응 에 있다.wakeup 버 전이 실 행 될 때 화면 이 꺼 진 상태 에 있 을 때 도 장 치 를 깨 워 필요 한 작업 을 수행 할 수 있 습 니 다.wakeup 버 전이 실 행 될 때 화면 이 꺼 진 상태 에 있 으 면 장 치 를 깨 우지 않 고 사용자 나 다른 조작 이 장 치 를 깨 울 때 까지 기 다 려 야 pendingIntent 를 전달 하여 작업 을 수행 할 수 있 습 니 다.
    총결산
    이상 은 이 글 의 모든 내용 입 니 다.본 논문 의 내용 이 안 드 로 이 드 개발 자 들 에 게 어느 정도 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 십시오.저희 에 대한 지원 에 감 사 드 립 니 다.

    좋은 웹페이지 즐겨찾기