В AsyncTask Как передавать данные из doInBackground () в основной интерфейс «мгновенно», а не после каждого цикла? (BufferedReader)
EDIT1:
Я изменил код так, чтобы обновление было выполнено в цикле while. ОДНАКО, НЕТ ИЗМЕНЕНИЯ. ПОКАЗЫВАЙТЕ ЭТО В КОДЕ ТАКЖЕ, удалены другие несоответствующие строки в onProgressUpdate (). ПОКАЗАНО В КОДЕ НИЖЕ.
Пожалуйста, ответьте, как вы бы научили любителя. Я передаю данные из doInBackground () в основной интерфейс в настоящее время. Оно работает. Тем не менее, это очень медленно. Я хочу отображать «мгновенные» результаты, а не после завершения цикла. Вот как код написан, однако, с точки зрения производительности, если цикл выполняется 100 раз, я получаю результаты AT только один раз после завершения 100 итераций. Это странно Я хочу вывод результатов после каждой итерации. Как этого добиться. В настоящее время;
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);
}
Как изменить вывод StringBuffer так, чтобы я получал мгновенные результаты после того, как читатель получит данные? Спасибо