In AsyncTask Wie werden Daten von doInBackground () sofort und nicht nach jeder Schleife an die Hauptbenutzeroberfläche übergeben? (BufferedReader)

EDIT1:

Ich habe den Code so geändert, dass das Update innerhalb der while-Schleife durchgeführt wurde. JEDOCH KEINE ÄNDERUNG. DIESE IN CODE UNTEN GEZEIGT. AUCH andere irrelevante Zeilen auf onProgressUpdate () entfernt. IM CODE UNTEN ANGEZEIGT.

Bitte antworten Sie so, als würden Sie einen Amateur unterrichten. Ich übergebe derzeit Daten von doInBackground () an die Hauptbenutzeroberfläche. Es klappt. Es ist jedoch sehr langsam. Ich möchte "Sofort" -Ergebnisse anzeigen und nicht, nachdem die Schleife abgeschlossen ist. Auf diese Weise wird der Code geschrieben. Wenn die Schleife jedoch 100-mal ausgeführt wird, erhalte ich die Ergebnisse nur einmal, nachdem 100 Iterationen abgeschlossen sind. Das ist komisch. Ich möchte, dass die Ergebnisse nach jeder Iteration ausgegeben werden. Wie man das erreicht. Zur Zeit

    protected Void doInBackground(Void... params) 
        {

            try {
    //bunch of code
for(int k=x1[3];k<=x2[3];k++)
            {
//Process process = execute it;
    reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
                    int j;
                    char[] buffer = new char[4096];
                    StringBuffer output = new StringBuffer();
                    while ((j = reader.read(buffer)) > 0)
                    {
                    output.append(buffer, 0, j); 
                    }
                    str = output.toString();
                    Log.d("1:STR VALUE", str);
                    publishProgress(str);
                    reader.close();  

    } //FOR loop ends
                 }}
    protected void onProgressUpdate(String... values) {
            results1.append(str);
            results1.append("\n");
            super.onProgressUpdate(values);
        }

Wie ändere ich die StringBuffer-Ausgabe so, dass ich sofort Ergebnisse erhalte, nachdem der Reader die Daten erhalten hat? Vielen Dan

Antworten auf die Frage(2)

Ihre Antwort auf die Frage