2012-04-01 2 views
0

안드로이드 서비스를 백그라운드로 실행하는 데 사용됩니다. 그러나 알람 관리자를 사용하여 동일한 작업을 수행 할 수도 있습니다. 알람 수신기는 서비스에서 수행 할 것과 동일한 작업을 수행 할 수 있습니다. 그렇다면 안드로이드 서비스의 필요성은 무엇입니까?안드로이드에서 서비스와 알람 관리자를 사용하는 차이점

답변

1

사실이 두 가지는 매우 다른 것입니다. Alarm Manager는 서비스를 사용하여 주기적으로 일부 작업을 수행하는 데 사용할 수 있습니다. 그러나 서비스는 또한 예를 들면 다음과 같이 사용될 수 있습니다. UI 스레드 (무중단 서버에서 데이터 다운로드) 나 포 그라운드 서비스의 경우 무거운 작업을 일부 이동 (mp3 플레이어)하여 지속적으로 수행 할 수 있습니다.

Styling Android에서 (AlarmManager를 고려한 몇 가지 조언이있는) 서비스 사용 방법에 대한 설명을 얻을 수 있습니다.

+0

즉시 경보를 설정하고 onreceive() 함수에서 경보를 설정할 수 있습니다 분리 된 실로 무거운 작업을하십시오. – Ashwin

+0

솔직히 말해서 나는 이런 식으로 시도하지 못했습니다. 그러나 서비스는 AlarmManager없이 많은 다른 작업에 사용됩니다. 예를 들어 서비스를 사용하여 나머지 서버에서 데이터를 다운로드하고 두 가지 다른 활동에 제공합니다. 나는 동일한 데이터에 도달하고 양쪽에서 다운로드를 다시로드 할 수 있기를 원합니다. 솔직히 여기 서비스에 대한 좋은 대안을 생각할 수 없습니다. AlarmManager는 이러한 작업에서 전혀 쓸모가 없습니다. –

0

일반적으로 사용자 인터페이스가 더 이상 필요하지 않으면 서비스를 사용하여 로직을 처리합니다. 예를 들어 내가 사용하고자하는 서비스는 15 분마다 소셜 네트워킹 사이트에서 업데이트를 확인합니다. 서비스에는 업데이트를 처리하는 논리가 있습니다. 그러나 누가 15 분마다 서비스를 시작할 것인가? 그것이 AlarmManager이 사용 된 곳입니다. 주기적으로 내 서비스를 한 번씩 시작하므로 서비스가 완료되고 응용 프로그램이 배터리를 소모하지 않으면 서비스가 논리를 실행하고 스스로 멈출 수 있습니다.

+0

정확히 말해서, 내가 말하고있는 것입니다. "하지만 누가 15 분마다 서비스를 시작할 것인가?" 왜 15 분마다 서비스를 시작해야합니까? broadcastReceiver의 onReceiver() 함수에서 업데이트를 확인하는 코드를 직접 작성할 수 있습니다. – Ashwin

+0

나는 당신이 말하는 것을 얻지 못합니다. 자세히 설명해주십시오. – Ashwin

+0

일치하는 의도가 브로드 캐스팅되면 브로드 캐스트 리시버가 시작됩니다. 소셜 네트워크 서버에 업데이트가있는 경우에도 모바일에 서버가 의도를 방송 할 수 없습니다. 모바일 내에서만 가능합니다. 이 경우 br은 쓸모가 없습니다. 서비스에 대한 서버에 연결하여 업데이트에 대해서만 알 수 있습니다. – Akhil

1

글쎄 두 가지가 완전히 다릅니다.

AlarmManager 클래스는 특정 시간 간격 후 특정 이벤트를 수행하는 데 사용되거나 일정한 시간 간격에있을 수 있습니다. 이벤트도 서비스 실행이 가능합니다. AlarmManager를 사용하면 미래의 어느 시점에서 실행되도록 응용 프로그램을 예약 할 수 있습니다.

Service의 경우에는 UI가없는/더 복잡한 백그라운드 프로세스입니다. 서비스가 절대적인 프로세스가 아니거나 서비스가 스레드가 아닙니다. 서비스는 사용자와 상호 작용하지 않고 장기 실행 작업을 수행하거나 다른 응용 프로그램에 사용할 기능을 제공하려는 응용 프로그램 구성 요소입니다.

+0

심지어 알람 관리자는 UI가 필요없는 백그라운드 프로세스입니다. 서비스 클래스에서 무엇을 해왔 던가, 같은 일도 broadcastreceiver 클래스에서 할 수 있습니다. – Ashwin

+0

잘 서비스 클래스의 이벤트를 예약 할 수 없습니다. – Lucifer

+0

결론은 무엇입니까? – Ashwin

관련 문제