我有一个Runnable,它通过在运行方法中执行以下操作,将数据(几百个文件)从Android设备传输到PC
我有一个主程序,可以创建一个Thread并启动这个runnable。 runnable开始运行并执行“adb pull”命令并开始传输数据,但它似乎在完成完全传输之后很快就会暂停。如果我强行退出主程序,转移将完成。
我也没有使用其他线程从主程序本身执行命令,我没有遇到任何问题。
为什么我要面对这个问题?
答案 0 :(得分:4)
您需要使用命令的输出。
此问题显示如何使用shell脚本而不是代码来使用输出:Java ProcessBuilder: Resultant Process Hangs。
如果要在Java代码中使用输出,基本上您将从Process.InputStream提供的InputStream中读取。
Process process = Runtime.exec(CMD);
InputStream in = process.getInputStream();
// Repeatedly read from the input stream until eof.
这将阻止,直到其他进程完成。如果你想要并发,你可以在另一个线程中读取输出。