Android 中调用本地命令
通常来说,在 Android 中调用本地的命令的话,一般有以下 3 种情况:
- 调用下也就得了,不管输出的信息,比如:
echo Hello World
。通常来说,这种命令不存在执行失败的情况,并且执行的结果也是可预期的; - 调用后要等待返回的结果,比如
ls -la /
。之所以要等待返回的结果,一般存在以下的 2 种情况:第一种是命令本身存在可能无法执行或者是执行的结果不符合预期的情况。另一种是输出的结果是无法预期的。在此例子中,如果用户没有访问/
目录的权限就会导致命令失败。而根目录中有些什么,是无法预期的; - 调用后的命令会持续运行,直到因为计数器达到指定时间或者是外界给出一些刺激停止。一些典型的例子如
ping www.bing.cn
(Linux 下),这一命令将会持续的进行ping
操作直到外界将其终止。
对于这 3 种命令的处理方式,也是稍有不同的。
快速结束的命令(无需返回值)
对于这样的命令,因为其非常快的就可以执行完毕,且不需要返回值,一般来说,直接在需要调用的进程中,直接使用 Java 的 exec
方法进行调用就可以了。
快速结束的命令(需要返回值)
对于这样的命令,虽然我们需要获得它的返回值,但是因为其执行速度很快,所以,也可以直接在需要调用的金成中使用 exec
方法进行调用。但是不要忽略这样的情况 echo fileName.txt
,假如文本文件的内容非常多,虽然程序能够执行,但是也许需要浪费很多的时间进行输出,那么实际需要的时间也是很久的,对于这样的命令,应该参照长连接命令进行处理。
长连接命令
对于长连接命令,一般来说,会单独的开一个线程,在该线程中开启 Java 的 Process 进行命令的处理。对应的代码,稍后给出。