Вы можете прочитать поток ввода (т.е. br.readLine()
) в потоке. Таким образом, он всегда работает в фоновом режиме.
То, как мы реализовали это в нашем приложении, примерно так:
Бизнес-логика, то есть место, где вы вызываете скрипт:
// Did something...
InvokeScript.execute("sh blah.sh"); // Invoke the background process here. The arguments are taken in processed and executed.
// Continue doing what you were doing
InvokeScript.execute () будет выглядеть примерно так:
InvokeScript.execute(String args) {
// Process args, convert them to command array or whatever is comfortable
Process p = Runtime.getRuntime().exec(cmdArray);
ReaderThread rt = new ReaderThread(p.getInputStream());
rt.start();
}
ReaderThread должен продолжать читать вывод процесса, который вы запустили, пока он длится.
Обратите внимание, что приведенный выше является только псевдокодом.