2014-11-26 3 views
0

나는 Android에서 Alarm Manager 페이지를보고 있으며이 기능을 사용하여 특정 시점 이후에 Pending Intent를 사용하여 구성 요소를 실행할 수 있음을 확인했습니다.Android 알람 관리자 및 대기중인 의도

이 기능의 유용성을 확인할 수 있지만이 기능이 도입 된 이유를 알고 싶습니다. 응용 프로그램에서 시간 자체를 카운트하고 특정 시간 후에 인 텐트를 트리거 할 수 없습니까? Alarm Manager와 함께 Pending Intent를 사용하여 동일한 목표를 달성하는 독특한 이점은 무엇입니까?

답변

1

Android에서 활동이 일시적입니다. Android는 언제든지 응용 프로그램을 파괴하거나 일시 중지 할 수 있습니다. 장시간 실행중인 활동이 일시 중지되거나 파괴되면 어떻게 현재 시간을 파악하고 의도를 실행할 수 있습니까? 경보 관리자는 경보가 트리거 된 시스템에 설정된 경보 수에 따라 시스템에 경보를 설정하거나 그 시간에 대략적으로 또는 지정된 시간에 경보를 설정하며이를 사용하여 인 텐트를 트리거 할 수 있습니다.

편집 : 응용 프로그램에 서비스가있을 수 있습니다. 이 서비스는 응용 프로그램의 일부이며 응용 프로그램 스레드에서 실행됩니다. 처리기를 생성하여 현재 시간에서 결정된 초까지 일부 코드를 트리거 할 수 있습니다. 서비스는 계속 실행되지 않고 주 스레드에서 모든 포커스를 취하기 때문에 괜찮습니다. 서비스는 코드를 실행 한 다음 끝내는 서비스입니다. 그것은 어떤 선을 기다리고 거기 머물러 있지 않습니다. 주 스레드에서 실행되므로 서비스의 코드가 항상 실행중인 경우 응용 프로그램에서 ANR이 발생할 수 있습니다. 계산 시간은 모든 처리 능력을 필요로하고 애플리케이션을 정지시키기 때문에 서비스의 while 루프처럼 완료되어야하는 것이 아닙니다. 이것이 알람이 유용한 이유이며, Android가 그 순간에 트리거합니다. 애플리케이션에서 처리중인 것이 아닙니다. 물론 다른 스레드에서 서비스를 만들 수는 있지만 시계와 같은 시간을 계산하는 것이 실제로 필요하지 않으면 왜 그런지 알지 못합니다.이 경우 알람이 더 좋습니다.

+1

응용 프로그램이 서비스에서 시간 계산을 할 수 있으므로이 대답은 완전하지 않습니다. 그러나 서비스에 대한 논쟁은 배터리 수명입니다. 시간 계산을 위해 휴대 전화 스폰 서비스의 각 앱을 상상해보십시오. 그럼에도 불구하고 내부적 인 이유로이 작업을 수행하는 시스템을 수행하는 것이 더 쉽습니다. 따라서 RAM과 CPU를이 문제로 복잡하게 만들 필요가 없습니다. – deekay