Android中与外部进程通信和调用外部程序
Android中与外部进程通信和调用外部程序
当一个程序第一次启动的时候,Android会启动一个LINUX进程和一个主线程。之前我写过两篇关于进程的笔记,请看: 和 。在Java中执行外部程序,是通过java.lang.Runtime对象的exec()方法来完成的。Runtime中重载了6个exec方法,返回一个java.lang.Process对象实例。
这个进程类主要功能是与外部进程通信的,看过API的同学也许已经看到了,android也提供了一个进程类,android.os.Process,这个类呢,文档上的Overview写道:Tools for managing OS processes,它是一个管理OS进程的工具,再看它的方法,提供了killProcess、sendSignal等等。
我们再回过头来看java.lang.Process的方法:
getInputStream():获取相关进程的输入流
getOutputStream():获取相关进程的输出流
waitFor ():等待外部进程执行完,返回进程的出口值
exitValue ():返回本地进程(native process)的出口值
下面是一个我们经常会见到的例子,也是文档中描述的例子:
- private static void ping()
- {
- Process process=null;
- try {
- process = new ProcessBuilder()
- .command("ping", "www.google.com")
- .redirectErrorStream(true)
- .start();
- InputStream in = process.getInputStream();
- BufferedReader br = new BufferedReader(new InputStreamReader(in));
- String s = null;
- while((s = br.readLine())!= null)
- {
- System.out.println(s);
- }
- }
- catch(IOException e)
- {
- e.printStackTrace(System.out);
- System.err.println("创建进程时出错");
- System.exit(1);
- }
- finally {
- process.destroy();
- }
- }
又使用了command方法和start方法。
|
评论暂时关闭