Mam działalność z niektórymi Handlers
, które są wykonywane w odstępach nie dłuższych niż 5 minut. Aktywność jest uruchamiana z poziomu BroadcastReceiver
i może zostać uruchomiona z wyłączonym ekranem, czekając, aż użytkownik złapie telefon i pobierze dane od użytkownika. W takim przypadku wywoływana jest aktywność onPause()
, więc na pewno procesor jest w trybie uśpienia. Nie ustawiłem aktywności, aby włączyć ekran, ponieważ chcę oszczędzić jak najwięcej baterii.Czy handler post Posta nie zostanie zwolniony, gdy CPU sypi?
Testowałem to z moim telefonem i działa bardzo dobrze, a ekran jest wyłączony Handlers
wykonać cały kod, który musi uruchomić. Jeśli włączam i wyłączam ekran, gdy czynność jest otwarta, wszystko działa poprawnie.
Teraz, wszędzie czytałem, że niektóre urządzenia nie działają zgodnie z oczekiwaniami, gdy ekran gaśnie, a procesor zasypia, przeważnie z akcelerometrami. Teraz moje pytanie brzmi: czy muszę zdobyć WakeLock
, aby procesor nie spał podczas mojej aktywności? Naprawdę chcę to wiedzieć, ponieważ, jak już wspomniałem, nie chcę "marnować" baterii przez zakup drogiego WakeLock
.
Wolałbym szczegółową odpowiedź osoby, która naprawdę wie, jak to działa.
A dlaczego używasz działań do wykonywania zadań w tle? Aktywność służy do wyświetlania rzeczy, a nie wykonywania zadań. Czy sprawdziłeś usługi? – tolgap
Nie, nie, działanie nie wykonuje zadań w tle. Czy działanie, które otwiera odbiornik Broadcast, czeka, aż użytkownik sprawdzi telefon i zobaczy go, ale nie chcę dodawać flagi 'KEEP_SCREEN_ON', dlatego czasami działanie jest otwarte przy wyłączonym ekranie (lub ekranie wyłącza się, gdy czynność jest otwarta). –