Ich muss beim Booten einen Dienst starten. Ich habe viel gesucht. Sie sprechen über Broadcastreceiver. Da ich neu in der Android-Entwicklung bin, habe ich mir kein klares Bild über die Dienste auf Android gemacht. Bitte geben Sie einen Quellcode an.
android
autostart
bootcompleted
harish
quelle
quelle
startForeground()
in Ihrem Dienst. Andernfalls beenden Android und seine Benutzer Ihren Dienst als Platzverschwendung, und Sie erhalten einige unangenehme Kommentare im Android Market. In den meisten Situationen, in denen Sie glauben, dass ein Dienst zum Startzeitpunkt gestartet werden soll, sollten Sie ihn besser bedienen,AlarmManager
damit Ihr Dienst nicht kontinuierlich, sondern regelmäßig ausgeführt werden kann .AlarmManager
nach dem Neustart zu starten, sehr ähnliche SchritteonReceive
Antworten:
Erstellen Sie ein
BroadcastReceiver
und registrieren Sie es, um ACTION_BOOT_COMPLETED zu erhalten . Sie benötigen außerdem die Berechtigung RECEIVE_BOOT_COMPLETED .Lesen Sie: Abhören und Senden globaler Nachrichten und Einstellen von Alarmen
quelle
Ihr Empfänger:
Ihre AndroidManifest.xml:
quelle
Von http://www.jjoe64.com/2011/06/autostart-service-on-device-boot.html
quelle
android.intent.category.LAUNCHER
!Bei den meisten der hier veröffentlichten Lösungen fehlt ein wichtiges Element: Wenn Sie ohne Wake-Lock arbeiten, besteht die Gefahr, dass Ihr Service vor Abschluss der Verarbeitung beendet wird. Ich habe diese Lösung in einem anderen Thread gesehen und auch hier geantwortet.
Da WakefulBroadcastReceiver in API 26 veraltet ist, wird es für API-Level unter 26 empfohlen
Sie benötigen eine Wecksperre. Glücklicherweise gibt uns die Support-Bibliothek eine Klasse , um dies zu tun:
Stellen Sie dann in Ihrem Dienst sicher, dass die Wecksperre aufgehoben wird:
Vergessen Sie nicht, die WAKE_LOCK-Berechtigung hinzuzufügen und Ihren Empfänger im Manifest zu registrieren:
quelle
Sie sollten sich sowohl für BOOT_COMPLETE als auch für REBOOT registrieren
quelle
Registrieren Sie Ihren erstellten Dienst auch im Manifest und verwenden Sie die Berechtigung als
und dann rufen Sie in Braod Cast Reciever Ihren Service an
quelle
Registrieren Sie zuerst einen Empfänger in Ihrer Datei manifest.xml:
und schreiben Sie dann eine Sendung für diesen Empfänger wie:
quelle
So starten Sie den Dienst in
Android O
oder mehr neu, z. B. Betriebssystem> 28 Verwenden Sie diesen Code. KOTLIN VERSION 1) Fügen Sie die Berechtigung im Manifest hinzu2) Erstellen Sie ein
Class
und erweitern Sie es mitBroadcastReceiver
3) Deklarieren Sie in der Manifest-Datei wie folgt unter dem Anwendungs-Tag
quelle
Bitte überprüfen Sie JobScheduler auf Apis über 26
WakeLock war die beste Option dafür, aber es ist in API-Level 26 veraltet. Bitte überprüfen Sie diesen Link, wenn Sie API-Levels über 26 berücksichtigen
Https://developer.android.com/reference/android/support/v4/content/WakefulBroadcastReceiver.html# startWakefulService (android.content.Context,% 20android.content.Intent)
Es sagt
so wie es heißt cosider JobScheduler
https://developer.android.com/reference/android/app/job/JobScheduler
Wenn Sie etwas anderes tun möchten, als es zu starten und beizubehalten, können Sie die Sendung ACTION_BOOT_COMPLETED empfangen
Wenn es nicht um den Vordergrund geht, prüfen Sie bitte, ob ein Eingabehilfedienst dies kann
Eine andere Möglichkeit besteht darin, eine Aktivität vom Broadcast-Empfänger aus zu starten und nach dem Starten des Dienstes in onCreate () zu beenden, da neuere Android-Versionen das Starten von Diensten von Empfängern nicht zulassen
quelle