2011-06-21 8 views
7

Mam działającą usługę Android, ale chcę uruchomić określoną metodę serwisową co X godzin, aby zaktualizować dane. Jaki jest najlepszy sposób na zrobienie tego bez marnowania zasobów Androida?Jak okresowo uruchomić metodę serwisową?

+0

Dlaczego po prostu nie uruchomisz usługi raz, a następnie dodasz zegar lub sprawisz, że wątek będzie spać przez odpowiedni czas? – CodeKrieger

+0

Wymagałoby to, aby proces serwisowy był wykonywany * zawsze *. Godzinami. To nie jest efektywne zasoby. –

+0

Dzięki! Uczę się, przeszukuję, jak dodać timer. Jakieś sugestie? – Ferran

Odpowiedz

8

Zajrzyj do AlarmManager.

Wyjaśnienie: ponieważ chcesz, aby metoda usługi była uruchamiana w odstępach godzinnych, nie chcesz, aby proces serwisowy działał przez cały ten czas. Korzystając z AlarmManager, system operacyjny może zabić usługę, gdy nie jest potrzebna, a następnie wywołać ją, aby wykonać tę metodę, gdy nadejdzie czas.

+0

Co, jeśli interwały są kwestią minut? Czy warto używać aplikacji AlarmManager? Lub lepiej sprawić, by wątek wywoływany przez usługę spał przez kilka minut? – Leeeeeeelo

+1

@Leeeeeeelo - dla zwiększenia wydajności, w małych odstępach czasu (mniej niż 10-15 minut), nie powinieneś iść z AlarmManager. Istnieją dyskusje na temat tego gdzie indziej na SO, np. http://stackoverflow.com/questions/11434056/how-to-run-a-method-every-x-seconds –