Projekt Android: długo działająca usługa w tle lub AlarmManager?

Buduję aplikację, która w regularnych odstępach czasu będzie monitorować stan baterii, połączenie Wi-Fi i dane o lokalizacji i będzie zapisywać wyniki w pliku (a później wysyłać je na serwer). Podczas instalacji monitorowanie aplikacji powinno być wyłączone - ale użytkownik, który ją włącza, powinien przetrwać restart. Po wielu lekturach zdałem sobie sprawę, że mam zasadniczo dwie opcje:

PodklasaService i odpalam z mojej działalności. Ustaw go na pierwszym planie, STICKY, a co nie, i miej nadzieję, że nie zostanie zabity przez androida - i uważaj, jeśli android go odtworzy (właściwie powinny być 3 serwisy, więc synchronizacja między nimi może być niechlujna). Uruchom wątek w usłudze (chyba nie potrzeba Executorów) i miej goThread.sleep(REGULAR_INTERVAL). Obudź się, zbierz dane i zapisz je w pliku. Przesyłaj zebrane informacje i wyświetlaj je na mojej aktywności, jeśli tak się dzieje (co spowoduje zarejestrowanie odbiornika rozgłoszeniowego). Wypłukać i powtórzyćwhile(true). Masz sposób, aby to przerwaćNiech moja aktywność zarejestruje PendingIntent za pomocą AlarmManager - który będzie działał co REGULAR_INTERVAL. Nie przyjrzałem się szczegółom technicznym tego podejścia tak bardzo - ale mam nadzieję, że uda mi się stworzyć ten PendingIntent, który stworzy i uruchomi IntentService (wydaje się, że jest to dobry sposób - posiadanie maszyny Thread za darmo, jak również zamykanie samemu). Niektóre kody szkieletowe dla tego podejścia byłyby mile widziane.

Myślę, że muszę zarejestrować odbiornik rozruchu w obu przypadkach, aby sprawdzić udostępnione preferencje (już to zrobiłem), aw przypadku 1 uruchomić usługę (y), podczas gdy w przypadku 2 zarejestrować odbiornik dla zdarzenia alarmowego i ustawić menedżera alarmów w górę - To jest część, której potrzebuję kodu szkieletu.

Więc - zanim zacznę to budować - jakie byłoby preferowane podejście?

Podsumowując - aplikacja powinna monitorować niektóre właściwości telefonu i zapisywać je do pliku, dopóki użytkownik nie wyłączy go.

questionAnswers(3)

yourAnswerToTheQuestion