티스토리 뷰

이 클래스는 시스템 알람 서비스에 접근하는 것을 제공한다. 이것은 애플리케이션이 미래의 어떤 정해진 시점에 실행될 수 있도록 스케쥴한다. 알람이 시작되면, 이것을 위해 등록했던 인텐트가 시스템에 의해 브로드캐스트 되고, 만약 애플리케이션이 실행 중이 아니라면 자동으로 대상 애플리케이션을 실행한다. 등록된 알람은 기기가 잠들어 있는 동안에 유지되지만 기기를 끄거나 재부팅했다면 삭제된다.

알람 관리자는 CUP wake lock을 가지고 있어서 가능한 오랫동안 알람 receiver의 onReceive() 메소드를 실행한다. 이것은 브로드캐스트를 관리하는 것을 마칠때 까지 전화기가 잠들지 잠들지 않을 것을 보증한다. 그리고 어떤 경우에는 가능한 빨리 onReceive() 메소드를 완료할 것임을 의미한다. 만약 알람 리시버가 Context.startService()를 호출했다면, 요청된 서비스가 실행되기 전에 전화기가 잠들 수 있다. 이런 경우를 막기위해, BroadcastReceiver 와 Service 는 구별된 wake lock policy 를 구현해서 서비스가 이용가능할 때까지 전화기를 계속 실행시킬 필요가 있다.

알람 관리자는 애플리케이션 코드가 특정 시간에 비록 애플리케이션이 중지된 상태라도 실행되는 것을 목표로 한다. 일반적인 timing operations (ticks, timeouts, etc) 에서는 Handler를 사용하는 것이 더 쉽고 효과적이다.

이 클래스는 직접 인스턴스화 할 수 없다. 대신에 Context.getSystemService(Context.ALARM_SERVICE) 를 통해 받을 수 있다.

댓글