确保清除Logcat日志的好方法是什么?

时间:2016-11-26 23:41:25

标签: java android logcat

我正在为我公司的某个Android应用编写单元测试。由于某些测试会检查Logcat输出中是否存在某些行,因此我希望在每次测试运行之前清除日志。

我知道这样做的基本命令是logcat -c。此过程不是即时的并且需要几秒钟,但由于它发生在单独的线程上,因此测试用例中的下一个命令将立即执行并可能返回不正确的结果。一种解决方法是添加强制等待。所以我的基本代码如下:

private void clearLogs() throws Exception {
    Runtime.getRuntime().exec("logcat -c");
    Thread.sleep(2000);
}

到目前为止,这一切都没有问题。但是,我的经理希望代码能够处理清除日志需要任意时间的情况。例如,假设存在一种假设情况,即清除日志需要20秒。我该怎么做呢?

我找到了一个解决方案,涉及创建一个过滤器,只获取在特定时间戳后写入的条目:

NOW=$(date +"%m-%d %H:%M:%S.000") ; adb logcat -T "$NOW"

这通常会消除完全清除loogs的需要。然而,它并不适合我,因为Logcat给了我一个"无效选项 - T"错误。

有人有任何解决方案吗?

1 个答案:

答案 0 :(得分:0)

而不是sleep()中的任意值,你可以试试这个:

Process process = Runtime.getRuntime()。exec(“logcat -c”); process.waitFor();