Process类

最近在写一个跑monkey的apk;

主要功能是:在运行单个应用的monkey命令时,可以不停的将log保存在文件中,但是存在问题是,当开始运行不多久时,手机容易卡死,重启才可恢复;

当发现这个情况时,想了很久不得法,这时候打开DDMS来分析,进行GC操作,发现手机又动起来了;

这时候可以知道,其实monkey命令在当前时候是没有运行结束时,至于为什么卡死;

因为在程序中使用了 Process类,造成了阻塞,至于细节,还需要多加学习;

附上blog:http://yearsaaaa123789.iteye.com/blog/1404865


1.想法1,通过起一个Service专门用来写log



一直在分析卡死的原因,在网上找到一篇文章,是由于没有去读取Process 的输入流,导致进程卡死。

http://www.blogjava.net/alwayscy/archive/2009/05/15/270925.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java的Process是用于执行操作系统进程的。它允许Java程序启动外部程序,并与其进行通信。Process提供了许多方法来控制和监视外部进程的执行,包括启动进程、等待进程结束、获取进程的输入流和输出流等。 要使用Process,需要使用Runtime的exec()方法来启动外部进程,并返回一个Process对象。通过这个Process对象,可以获取进程的输入流、输出流和错误流,并通过这些流与进程进行通信。 下面是一个简单的示例代码,演示了如何使用Process执行外部命令并获取其输出: ```java import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; public class ProcessExample { public static void main(String[] args) { try { Process process = Runtime.getRuntime().exec("ls -l"); // 获取进程的输入流 InputStream inputStream = process.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); String line; while ((line = reader.readLine()) != null) { System.out.println(line); } // 等待进程结束 int exitCode = process.waitFor(); System.out.println("Exit code: " + exitCode); } catch (IOException | InterruptedException e) { e.printStackTrace(); } } } ``` 以上代码会启动一个外部进程执行"ls -l"命令,并将命令的输出打印到控制台。最后,程序会等待进程执行结束并获取退出码。 请注意,使用Process执行外部命令时,需要注意处理进程的输入流、输出流和错误流,以避免进程阻塞或产生错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值