2010-07-22 4 views
13

사용자가 버스 출발을 추적하기 시작한 위젯을 표시하고 싶습니다. 나는 사용자가 추적을 시작할 때부터 버스가 출발 할 때까지 (즉, 시간이 끝날 때까지) 위젯을 매 순간 업데이트하려고합니다.자주 업데이트되는 위젯 (updatePeriodMillis가 허용하는 것보다 더 자주 사용)

이 위젯은 updatePeriodMillis이 허용하는 것보다 더 자주 업데이트해야합니다 (매 30 초마다 업데이트해야 함). 1 분에 1 번 정도 생각해 봅니다.

안드로이드 프로그래밍에 익숙하지 않으므로 몇 가지 방법을 생각해 볼 수는 있지만 너무 많은 배터리를 소모하는 방식으로 끝내기 때문에 더 많은 정보를 원합니다. 경험 많은 안드로이드 개발자.

타이머를 어떻게 시작하나요? 애플리케이션 런타임에서 위젯 인스턴스에 어떻게 액세스 할 수 있습니까? 등등.

+8

FYI의 updatePeriodMillis 업데이트 빈도는 초가 아니라 30 분 ** **입니다. –

답변

21

나는 내 서비스를 1 분마다 시작하는 알람을 등록 할과 서비스는 영향을받지 않습니다 배터리 수명에 자고 경우

final Intent intent = new Intent(context, UpdateService.class); 
final PendingIntent pending = PendingIntent.getService(context, 0, intent, 0); 
final AlarmManager alarm = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); 
alarm.cancel(pending); 
long interval = 1000*60; 
alarm.setRepeating(AlarmManager.ELAPSED_REALTIME, SystemClock.elapsedRealtime(),interval, pending); 

AlarmManager.ELAPSED_REALTIME 장치를 wakr하지 않습니다 위젯 UI를 업데이트 할 것입니다.

+4

"나는 경보를 등록하겠다."- 그 코드는 어디에 있습니까? 'AlarmManager'는 어디에서 등록합니까? – jjnguy

+1

@jjnguy AlarmManager는 'context.getSystemService'에서 수신 했으므로 등록 할 필요가 없습니다. –

+2

전혀 도움이되지 않습니다! 이 코드는 어디에 모두 있습니까? 초보자가 위젯을 사용하는 경우, 그것을 사용하지 않아도됩니다. – Virthuss

관련 문제