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 ??
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
wendenFührt die angegebene Aktion im Benutzeroberflächenthread
aus %Vor%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.
Tags und Links android error-handling