Wie starte ich meinen Dienst in einem neuen Thread? Ich schaute auf andere Fragen, aber es funktionierte nicht für mich. Welche Änderungen muss ich in meinem Dienst vornehmen, wenn er normalerweise ausgeführt wird und wenn er in einem separaten Thread ausgeführt wird?
Benenne deine public void onStart(final Intent intent, final int startId)
-Methode in _onStart
um und verwende diese neue onStart
-Implementierung:
Für API-Stufen 5 und höher
public void onStart(Intent, int)
wurde auf API-Ebene 5 nicht weiter unterstützt. Dies sollte durch public int onStartCommand(Intent, int)
Ich glaube nicht, dass Sie Ihren Dienst in einem neuen Thread starten können, aber Sie können einen neuen Thread in Ihrem Dienst starten.
Dies liegt daran, dass der Dienst wie die Aktivität Lebenszyklusmethoden hat, die im Hauptthread ausgeführt werden.
Ihr Dienst wird also auf dem Hauptthread ausgeführt, aber er wird den neuen Thread, den er erstellt, wenn er es benötigt, stark belasten.
Ich hoffe es hilft ..
Zitieren von Ссылка
"Beachten Sie, dass Dienste wie andere Anwendungsobjekte im Hauptthread des Hostingprozesses ausgeführt werden. Dies bedeutet, dass Ihr Dienst CPU-intensiv (z. B. MP3-Wiedergabe) oder blockierend (z. B. Netzwerk) ausführt. Zu diesem Zweck sollte ein eigener Thread erstellt werden, in dem diese Aufgabe ausgeführt wird.Weitere Informationen hierzu finden Sie unter Prozesse und Threads.Die IntentService-Klasse ist als Standardimplementierung von Service verfügbar, die einen eigenen Thread hat, an dem sie ihre Arbeit plant fertig. "
In meinem Projekt habe ich jemanden wie diesen und es funktioniert:
%Vor%Tags und Links android android-service