Вкратце, посмотрите на переменную «str» ниже. Выход из него - это весь результат операции PING.Как отображать результаты ping по строкам в Android (Java)?
reader = new BufferedReader(new InputStreamReader (process.getInputStream()));
int j;
char[] buffer = new char[240];
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+" ");
Переменная «str» содержит весь результат операции, т. Е. 3 пинга на IP-адрес. Тем не менее, я хочу отображать пинги по строкам, один за другим на активность Android, из этой задачи Async.
Кроме того, если кто-то может объяснить ограничения производительности длины массива буфера, который я использую (т. Е. 240 против 120), это было бы здорово.
РЕДАКТИРОВАТЬ-1 (ответ на комментарий):
11-28 18:11:17.404 10769-10815/com.example1 D/1:STR VALUE: PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
64 bytes from 192.168.0.1: icmp_seq=1 ttl=255 time=8.83 ms
11-28 18:11:17.600 10769-10815/com.example1 D/1:STR VALUE: PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
64 bytes from 192.168.0.1: icmp_seq=1 ttl=255 time=8.83 ms
64 bytes from 192.168.0.1: icmp_seq=2 ttl=255 time=2.05 ms
11-28 18:11:17.801 10769-10815/com.example1 D/1:STR VALUE: PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
64 bytes from 192.168.0.1: icmp_seq=1 ttl=255 time=8.83 ms
64 bytes from 192.168.0.1: icmp_seq=2 ttl=255 time=2.05 ms
64 bytes from 192.168.0.1: icmp_seq=3 ttl=255 time=3.38 ms
--- 192.168.0.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 403ms
rtt min/avg/max/mdev = 2.059/4.758/8.835/2.933 ms
Пожалуйста, обратите внимание, что, когда значение STR публикуется внутри цикла в то время, повторение вывода происходит.
Не могли бы вы разместить весь код AsyncTask – foxanna
Привет, «процесс» - это процесс выполнения, который получает результаты ping, а переменная «str» публикуется в главном пользовательском интерфейсе с помощью метода onProgressUpdate (String ... values). Я не могу опубликовать весь код по определенным причинам. – Zac1
Ничего. Почему бы вам не использовать 'publishProgress (str);' столько раз, сколько количество пиков, внутри цикла while. И отобразите строки в Activity внутри обработчика onProgressUpdate. – foxanna