Fehler beim Aufruf von Toast von Service Android [duplizieren]

8

Ich verwende Service Android, der in android.app.Service definiert ist.

Ich rufe diesen Dienst (myService) von einer Aktivität.

MeinService ist:

%Vor%

Die Methode checkDate () befindet sich in der Klasse myService.

Der Fehler ist:

%Vor%     
GVillani82 19.09.2012, 15:45
quelle

2 Antworten

23

TimerTask wird in einem separaten Thread ausgeführt. Toast.makeText() muss von einem Thread ausgeführt werden, der ein Handler/Looper eingerichtet hat. Das bedeutet im Wesentlichen, dass Sie den Toast auf einen Thread richten müssen, auf dem der Standard-Android-Nachrichten- / Event-Dispatcher läuft.

Der einfachste Weg dies zu tun wäre in Ihrer checkDate() Methode:

%Vor%

EDIT: Ich bin ein Idiot, das ist nicht richtig. Sie können runOnUiThread () nicht aus einem Service-Kontext

aufrufen

Sie müssen hierfür einen Handler verwenden. In Ihrem Service:

%Vor%

in onCreate() Ihrer Dienstleistung:

%Vor%

in checkDate() Methode:

%Vor%     
David Wasser 19.09.2012, 15:58
quelle
4

Sie rufen es von einem Arbeitsthread an. Sie müssen Toast.makeText () (und die meisten anderen Funktionen, die die Benutzeroberfläche betreffen) innerhalb des Hauptthreads aufrufen. Sie könnten zum Beispiel einen Handler verwenden.

Sie müssen Toast.makeText (...) vom UI-Thread aus aufrufen:

%Vor%     
Lucifer 19.09.2012 15:54
quelle