запускать внешние команды из Java (Android) и читать непрерывный вывод - PullRequest
0 голосов
/ 27 августа 2011

Я хочу запустить исполняемый файл, такой как ping (или любой другой, который дает непрерывный вывод), прочитать его вывод и распечатать его в моем графическом интерфейсе.

Я использовал следующий метод для запуска своих команд:

command=Runtime.getRuntime().exec("ping www.google.com");

и я читаю вывод следующим образом:

BufferedReader in = new BufferedReader(new InputStreamReader(command.getInputStream()));

while ((line = in.readLine()) != null) {  
                    System.out.println(line+"\n");
}

это работает нормально, хотя вывод на дисплей довольно поздний по сравнению с временем, которое я выполняю ./excutable с помощью оболочки adb -d.

Как я хочу, чтобы этот вывод (строка) в графическом интерфейсе, поэтому я делаю TextView и добавляю вывод (строку) в нем как:

txtview=(TextView)findViewById(R.id.textview);
while ((line = in.readLine()) != null) {  
                    txtview.append(line+"\n");
                    System.out.println(line+"\n");
}

но это приводит к сбою моего приложения. пожалуйста, скажите мне, как решить эту проблему.

1 Ответ

1 голос
/ 27 августа 2011

Если ваш последний блок кода выполняется в Activity, то вы, вероятно, слишком долго блокируете поток пользовательского интерфейса. Это заставит Android принудительно закрыть ваше приложение. Попробуйте использовать AsyncTask, чтобы получить вывод и обновить графический интерфейс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...