2010-07-22 12 views
13

Chcę, aby widżet wyświetlał odliczanie dla zainicjowanego przez użytkownika śledzenia odjazdu autobusu. Chcę aktualizować widżet co minutę, od momentu, w którym użytkownik zainicjuje śledzenie, do momentu kiedy autobus odjedzie (tzn. Skończy się czas).Często aktualizowane widżety (częściej niż zezwala na to aktualizacjaPeriodMillis)

Ten widget musi być aktualizowany częściej, niż zezwala na to updatePeriodMillis, co 30 sekund. Sądzę, że raz na minutę.

Będąc nowicjuszem w programowaniu Android, mogę wymyślić kilka sposobów na zrobienie tego, ale prawdopodobnie skończyłbym to robić w sposób, który pochłania zbyt dużo baterii itp., Więc szukam wglądu z więcej doświadczeni programiści Androida.

Jak uruchomić stoper? W jaki sposób mogę uzyskać dostęp do instancji widgetu z uruchamiania moich aplikacji? I tak dalej.

+8

FYI, częstotliwość aktualizacji 'updatePeriodMillis' wynosi 30 ** minut **, a nie sekundy. –

Odpowiedz

21

chciałbym zarejestrować alarm rozpocząć moją usługę co 1 minutę, a usługa będzie zaktualizować UI widżet

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 nie wakr urządzenie jeżeli śpi na żywotność baterii nie powinna być ograniczona.

+4

"Chciałbym zarejestrować alarm" - Gdzie ten kod się znajduje? Gdzie rejestrujesz 'AlarmManager'? – jjnguy

+1

@jjnguy AlarmManager nie musi być rejestrowany, ponieważ został odebrany z 'context.getSystemService'. –

+2

To wcale nie jest pomocne! Gdzie idzie ten cały kod? Dla początkującego używającego widgetu, nie ma sensu, aby ... – Virthuss

Powiązane problemy