Wie starte ich einen Dienst in einem neuen Thread?

8

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?

    
carora3 13.01.2012, 14:48
quelle

4 Antworten

8

Benenne deine public void onStart(final Intent intent, final int startId) -Methode in _onStart um und verwende diese neue onStart -Implementierung:

%Vor%

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)

ersetzt werden %Vor%     
theomega 13.01.2012 15:21
quelle
3

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 ..

    
R.daneel.olivaw 13.01.2012 15:52
quelle
2

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. "

    
Stefan 13.01.2012 15:09
quelle
-1

In meinem Projekt habe ich jemanden wie diesen und es funktioniert:

%Vor%     
Dawid Sajdak 13.01.2012 14:51
quelle

Tags und Links