Cóż, nawet jeśli użyjesz zmiennej instancji, myślę, że to nie jest sposób na zrobienie tego. Kto zadzwoni pod numer destroy()
? Mam nadzieję, że nie, to zadanie dla systemu operacyjnego. Ale gdy trzymasz blokadę wybudzającą, jest mało prawdopodobne, że twoja metoda destroy()
zostanie wywołana, ponieważ system operacyjny najpierw zniszczy inne czynności/usługi.
Poza tym jest zbyt późno, aby uzyskać blokadę wybudzania w metodzie onCreate()
. Przed osiągnięciem onCreate()
telefon może już zasnąć, gdy uruchomisz usługę z alarmu lub z działania, które jest w tle.
Trudno powiedzieć, co należy zrobić inaczej, ponieważ nie podaje się zbyt wiele kontekstu. Zwykły tok wydarzeń. A BroadcastReceiver
zostaje wywołana, aw onReceive()
uzyskujesz blokadę wybudzania i umieszczasz ją w zmiennej statycznej w usłudze. Po wykonaniu usługi należy wywołać stopSelf()
, zwolnić blokadę wybudzania, a następnie usunąć zmienną statyczną, która zachowuje odwołanie do blokady.
Ponadto, jeśli korzystasz z usługi, pełna blokada wybudzenia prawdopodobnie nie jest tym, czego potrzebujesz, ale jest częściowa blokada wybudzania. Nie potrzebujesz ekranu, by pozostać włączony, prawda?
Przepraszam, ale blokady wybudzenia są naprawdę skomplikowane w użyciu, z powodu dokładnie problemów opisanych powyżej. Jest to zdecydowanie zaawansowany temat i łatwo go zepsuć. Jeśli to zrobisz, Twoja aplikacja otrzyma bardzo brzydkie komentarze, ponieważ zbyt długie trzymanie się jest poważnym przestępstwem, ponieważ powoduje wyczerpanie baterii. Nie bierz tego w niewłaściwy sposób, ale biorąc pod uwagę naturę problemu, który tu zamieściłeś (błąd składni/kompilatora), zdecydowanie zalecamy wyszukanie rozwiązania bez usługi i blokady wybudzania.
Dzięki za komentarz. W aplikacji, nad którą pracuję, potrzebuję, aby telefon był w trybie czuwania w 100%, dlatego użyłem pełnej blokady wybudzania. – Tom
Częściowy wakelock powinien wystarczyć do zasilenia procesora i korzystania z sieci. – Eno
Dziękuję również ode mnie. Twoje wyjaśnienie jest zwięzłe i bardziej pomocne niż pytanie i odpowiedź w połączeniu :) – Melllvar