2011-10-19 4 views
4

Alarm Manager를 사용하여 Android 백그라운드 서비스에 대한 간단한 브리핑 또는 정교한 세부 정보를 줄 수 있습니까?Android 백그라운드 서비스 대 AlarmManager

어떻게 다른가요? 그리고 어느 상황에서 나는 각각을 사용해야합니까?

웹 서비스에서 데이터를 주기적으로 다운로드해야하는 응용 프로그램을 개발 중입니다. 응용 프로그램에는 모듈이 거의없고 각 모듈마다 웹 서비스에 데이터를 다운로드/동기화 할 간격 시간 간격이 다릅니다.

하자가 + 모듈 D 매주 + 모듈 E를 동기화 할 필요가 매일에 동기화해야 1 시간마다 + 모듈 C에 동기화해야 + 모듈 A는 매 15 분 + 모듈 B에 동기화 필요하다고 월간 동기화 필요

어떤 접근 방식이 더 좋습니까? 그리고 왜?

감사합니다.

답변

6

알람 관리자가 인 텐트를 예약합니다. 서비스가 중단되어 메모리를 사용할 수없는 경우 제거 할 수 있습니다. 그러나 알람을 예약하면 알람 시간에 특정 서비스를 호출 할 수 있습니다. 상황에 따라 알람은 실행중인 서비스보다 더 좋은 옵션입니다.

희망이 있으면 도움이 될 것입니다.

+1

흠, 알았어 ... 어떤 상황에서 백그라운드 서비스를 사용합니까? – rxlky

+0

배경 서비스는 백그라운드에서 무언가를하고 싶을 때 거대한 파일을 다운로드하려는 경우 서비스를 사용해야하므로 클라이언트는 앱의 다른 기능을 계속 사용합니다. –

0

알람 관리자를 사용하여 인 텐트를 예약 할 수 있습니다. 귀하의 서비스 또는 BroadcastReceiver는 이러한 예정된 의도를 듣고 주어진 시간에 작업을 수행 할 수 있습니다. AlarmManager를 사용하여 프로그램 논리를 구현할 수 없습니다.

AlarmManager를 사용하여 15 분마다 A에 대한 작업, B에 대해 1 시간의 작업 등을 포함하여 Intent를 파견 할 수 있습니다. 모듈이 독립적 인 서비스로 구현되거나 사용자가 취해야 할 조치를 결정합니다.

BroadcastReceiver에서 긴 작업을해서는 안됩니다.

+0

따라서 서비스를 확장하는 활동은 BroadcastReceiver와 동일합니까? 안드로이드 서비스는 권장하지 않지만 알람 관리자를 사용하는 곳을 읽었습니다. 무엇 않습니다 그 의미? – rxlky

+0

아니요 BroadcastReceiver와 같지 않습니다. 귀하의 문제에 대해서는 아마도 BroadcastReceiver에 관한 모든 것을 잊을 수 있습니다. 알람 관리자를 사용하는 것이 좋습니다. 특정 시간 간격을 기다리는 서비스를 항상 실행하지 않고 특정 시간 후에 Intent를 보내려는 AlarmManager를 사용하면 작업에 대한 서비스가 시작됩니다. 그 장치의 자원은 그렇게 많이 사용되지 않을 것입니다. – senola

+0

흠, 알았어 ... 어떤 상황에서 백그라운드 서비스를 사용합니까? – rxlky