So aktualisieren Sie den text in der Benutzeroberfläche von der hintergrund-thread in Android
In meiner Anwendung brauche ich zum aktualisieren der text in der Benutzeroberfläche je nach Daten aus dem Netzwerk.Dafür bin ich mit einem AsyncTask
Arbeit tun, im hintergrund in Android. Mein code ist wie folgt.
public class DefaultActivity extends Activity{
TextView textView;
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
textView=(TextView)findViewById(R.id.textId);
new networkFileAccess().execute("background","Progress","result");
}
private class networkFileAccess extends AsyncTask<String,String,String>{
protected String doInBackground(String... background){
return changeText();
}
private String changeText(){
//Code to Access data from the Network.
//Parsing the data.
//Retrieving the boolean Value.
if(booleanistrue){
//Displaying some text on the UI.
publishProgress("someTextOnUI");
//Send request till we get get boolean value as false.
changeText();
}else{
return "success";
}
return "";
}
protected void onProgressUpdate(String... progress){
textView.setText("Wait background work is going on");
}
protected void onPostExecute(String result){
if(result.equals("success")){
//Code to finish the activity.
}
}
}
}
In den obigen code, ich bin in der Lage zu führen Sie die hintergrund-thread, bis ich das bekomme booleschen Wert false.Der text ist jedoch nicht auf die Aktualisierung der Benutzeroberfläche. Kann ich ein update der text auf der Benutzeroberfläche mithilfe onProgressUpdate
() - Methode durch Aufruf publishProgress
Methode.?Alle suggesstions.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Setzen Sie Ihre Ui-Methode innerhalb runonUiTHREAD wie diese
In AsyncTask, onPostExecute() und onPreExecute() beide Läufe auf dem UI-thread. So können Sie den text ändern, der in der onPostExecute () - Methode.
Oder Sie können auch anrufen runOnUiThread in doInBackground () - Methode läuft in thread:
Es post runnable ausgeführt UI-thread.
Ich vermute, die kurze Antwort ist, ja, können Sie aktualisieren Sie UI-Elemente in der Methode onProgressUpdate. OnProgressUpdate tatsächlich aufgerufen wird, die auf dem UI-thread sich selbst, so brauchen Sie nicht, etwas zu tun Lust.
Woher wissen Sie, Ihre onProgressUpdate nicht funktioniert, wenn es hardcoded "Warten im hintergrund ist Los"?
Außerdem gibt es irgendeinen Grund, warum Sie nicht mit einem ProgressDialog, um zu zeigen, das "Warten im hintergrund ist Los" - Nachricht an Ihre Benutzer? Es ist in der Regel mehr intuitiv, wenn Sie wirklich wollen, um Sie zu warten. Es zeigt ein spinner oder Fortschrittsbalken (Ihrer Wahl), können Sie Sie wissen, dass die Arbeit getan wird. Es dient auch als eine Möglichkeit, zu verhindern, dass Sie tun andere Sachen, bis Ihre Anwendung erfolgt die Verarbeitung, was es hat.