Byłbym wdzięczny za kilka wskazówek, jak radzić sobie z OS zabijając usługi na długie lata.Najlepsza architektura dla długotrwałej usługi na Androidzie
scenariusz działalności:
Aplikacja nagrywa utwór BTT, które mogą trwać przez kilka godzin. Może również wyświetlać ślad na mapie wraz z odpowiednimi statystykami.
Interfejs użytkownika aplikacji umożliwia użytkownikowi rozpoczęcie/zatrzymanie nagrywania ścieżki i wyświetlanie bieżącego śladu na mapie.
Po zakończeniu rejestracji ścieżki użytkownik może zamknąć aplikację i wyłączyć ekran (aby oszczędzać energię), a tylko usługa pozostanie uruchomiona, aby zachować aktualizację nagrania w bazie danych (pokazane powiadomienie), dopóki użytkownik nie uruchomi ponownie poprosić o zatrzymanie nagrywania, co spowoduje zakończenie usługi.
Problem:
Po zmiennej czasu, która trwa od 40 minut do 1 godziny i pół, obsługa nagrywania ginie bez żadnego ostrzeżenia. Ponieważ wyjazdy BTT mogą trwać kilka godzin, wynik ten jest niekompletny.
Niektóre informacje dodatkowe:
usługa jest uruchomiona z START_STICKY
i nabywa PARTIAL_WAKE_LOCK
i biegnie w tym samym procesie jako głównej działalności.
Nowe lokalizacje są pobierane (i rejestrowane) według ustalonej przez użytkownika stawki od 1 sekundy do kilku minut. Z dokumentacji systemu Android wiem, że jest to oczekiwane zachowanie systemu operacyjnego dla długotrwałych usług.
Pytanie:
Jakie jest najlepsze podejście do projektowania architektury mieć dobrze wychowane aplikację, która mogłaby zaspokoić wymagania scenariuszu biznesowym?
Mogę myśleć o kilka opcji (i nie lubię żadnego z nich), ale chciałbym wskazówek od kogoś, jak już wychodził i rozwiązać podobny problem:
- odbiornik używają rozgłaszania (idealnie połączone z Menedżerem lokalizacji, jeśli jest to możliwe), aby usługa działała tylko po uzyskaniu nowej lokalizacji ?
- Nie należy zezwalać użytkownikowi na opuszczenie głównego działania (co powoduje, że użytkownik odczuwa przyjemność)?
- Czy odbiornik radiowy ponownie uruchamia usługę w razie potrzeby?
Dziękuję wszystkim, którzy mogą podzielić się mądrością na ten temat.
Thanks Michael. Mam zamiar przetestować to, a dam ci znać wynik. – Luis
Działa bez przerwy przez wiele godzin. Zostało to rozwiązane :-) Dziękuję Michaelowi. – Luis
Cieszę się, że mogę pomóc! – Michael