java.lang.RuntimeException: Kann keinen Handler innerhalb des Threads erstellen, der Looper.prepare () nicht aufgerufen hat

7

hi Ich habe ein Problem mit meinem Code .. mein Code ist

%Vor%

und Fehler wie folgt:

%Vor%

Wenn Aktivität Daten auf dem Server speichern Ich kann den Fortschrittsbalken ausführen, aber wenn dies nicht funktioniert .. Was soll ich tun, um dieses Problem zu beheben ??

    
akubabas 15.03.2012, 03:35
quelle

4 Antworten

13

Wahrscheinlich erhalten Sie einen Fehler wegen des Threads, in dem Sie den Kontext der Aktivität verwenden.

Sie sollten anstelle eines normalen Threads die AsyncTask verwenden. In AsyncTask gibt es eine Methode onPreExecute() und onPostExecute() , die auf dem Haupt-Thread ausgeführt werden, und es gibt eine Methode doInBackground() , die im Hintergrund ausgeführt wird, so dass Sie den langen Live-Prozess einfach implementieren können.

Sie können sich an dieses Beispiel

wenden     
Dharmendra 15.03.2012, 03:44
quelle
5

Manchmal tritt dieses Problem möglicherweise auf, selbst wenn sich der fehlerhafte Code in der Aktivität befindet (wie in meinem Fall bei Verwendung der Unity-Spielengine).

Der folgende Code hat für mich funktioniert.

%Vor%     
netlander 24.07.2013 16:49
quelle
4

Führt die angegebene Aktion im Benutzeroberflächenthread

aus %Vor%     
SurenSaluka 15.03.2013 07:39
quelle
2

Wenn Sie eine AsyncTask verwenden und Prozesse im doInBackground-Thread ausführen Sie können keine Funktionen wie Toast ausführen und beispielsweise ein neues Fragment öffnen.

Wenn Sie auf diesen speziellen Fehler stoßen, verwenden Sie diesen Code, um einen neuen Thread zum Ausführen des Codes zu erstellen. Es bringt es in den Vordergrund, anstatt einen Hintergrundprozess (so weit ich es verstehe).

Für Fragmente:

%Vor%

Für Aktivität:

%Vor%

Der Unterschied zwischen den beiden besteht nur darin, ob Sie this oder getActivity() aufrufen, um den Thread zu starten. In beiden Fällen erstellen beide einen neuen Thread für die laufende Aktivität.

Ich hoffe, das hilft!

Oh, und als Anmerkung, in der AsyncTask kann man eigene Funktionen erstellen, wie zum Beispiel:

%Vor%

In diesen Funktionen, die Teil Ihrer AsyncTask-Klasse sind, würden Sie das runOnUiThread() Code einfügen. Hoffentlich ist das klarer.

    
Brandon 25.07.2014 16:00
quelle

Tags und Links