Muszę uruchomić usługę w czasie rozruchu. Szukałem dużo. Mówią o Broadcastreceiver. Ponieważ jestem nowy w programowaniu dla Androida, nie mam jasnego obrazu usług na Androida. Proszę podać kod źródłowy.
android
autostart
bootcompleted
harish
źródło
źródło
startForeground()
w swojej usłudze. W przeciwnym razie Android i jego użytkownicy zabiją twoją usługę jako stratę miejsca, a ty otrzymasz nieprzyjemne komentarze w Android Market. W większości sytuacji, w których myślisz, że chcesz, aby usługa była uruchamiana w czasie rozruchu, lepiej jest korzystać z niej,AlarmManager
aby usługa mogła działać okresowo, a nie w sposób ciągły .AlarmManager
po ponownym uruchomieniu, należy wykonać bardzo podobne kroki (różnica polega na treścionReceive
metody)Odpowiedzi:
Utwórz
BroadcastReceiver
i zarejestruj go, aby otrzymać ACTION_BOOT_COMPLETED . Potrzebujesz również uprawnienia RECEIVE_BOOT_COMPLETED .Przeczytaj: Odsłuchiwanie i nadawanie globalnych wiadomości oraz ustawianie alarmów
źródło
Twój odbiornik:
Twój plik AndroidManifest.xml:
źródło
Od http://www.jjoe64.com/2011/06/autostart-service-on-device-boot.html
źródło
android.intent.category.LAUNCHER
!W większości przedstawionych tutaj rozwiązań brakuje ważnego elementu: zrobienie tego bez blokady uśpienia grozi śmiercią usługi przed zakończeniem przetwarzania. Widziałem to rozwiązanie w innym wątku, odpowiadając również tutaj.
Ponieważ WakefulBroadcastReceiver jest przestarzałe w API 26, jest zalecane dla poziomów API poniżej 26
Musisz uzyskać blokadę budzenia. Na szczęście biblioteka pomocy technicznej daje nam do tego klasę :
następnie w swojej usłudze pamiętaj o zwolnieniu blokady uśpienia:
Nie zapomnij dodać uprawnienia WAKE_LOCK i zarejestrować odbiorcę w manifeście:
źródło
powinieneś zarejestrować się w BOOT_COMPLETE, a także w REBOOT
źródło
Zarejestruj również utworzoną usługę w Manifeście i pozwolenie na używanie jako
a potem w nowej obsadzie Reciever wezwać serwis
źródło
Najpierw zarejestruj odbiornik w pliku manifest.xml:
a następnie napisz transmisję dla tego odbiornika jak:
źródło
Aby ponownie uruchomić usługę w
Android O
lub więcej, tj. OS> 28 Użyj tego kodu WERSJA KOTLIN 1) Dodaj uprawnienia w manifeście2) Utwórz
Class
i rozszerz go za pomocąBroadcastReceiver
3) Zadeklaruj w pliku manifestu w ten sposób pod znacznikiem aplikacji
źródło
Sprawdź JobScheduler dla apis powyżej 26
WakeLock był najlepszą opcją do tego, ale jest przestarzały na poziomie API 26. Sprawdź ten link, jeśli rozważasz poziomy API powyżej 26
https://developer.android.com/reference/android/support/v4/content/WakefulBroadcastReceiver.html# startWakefulService (android.content.Context,% 20android.content.Intent)
To mówi
tak jak mówi cosider JobScheduler
https://developer.android.com/reference/android/app/job/JobScheduler
jeśli ma coś zrobić, niż zacząć i to zatrzymać, możesz odebrać transmisję ACTION_BOOT_COMPLETED
Jeśli nie chodzi o pierwszy plan, sprawdź, czy usługa ułatwień dostępu może zrobić
inną opcją jest rozpoczęcie czynności z odbiornika rozgłoszeniowego i zakończenie jej po uruchomieniu usługi w ramach onCreate (), ponieważ nowsze wersje Androida nie pozwalają na uruchamianie usług z odbiorników
źródło