我希望Logcat记录到我的应用程序中的文件。所以我使用这段代码将日志缓冲区重定向到文件(并且它可以工作):
String filePath = Environment.getExternalStorageDirectory() + "/logcat.txt";
try {
// This line clears the previous logs
Process process = new ProcessBuilder()
.command("logcat", "-c")
.redirectErrorStream(true).start();
//TODO execute this once / double check this is active
//each time this line is ran it will send another dump to the log file, 1, 2, 3, 4, etc.
Runtime.getRuntime().exec(new String[]{"logcat", "-f", filePath, "-v", "time", "ActivityManager:W", "InvApp:I", "*:S"});
} catch (IOException e) {
e.printStackTrace();
}
Log.w("InvApp", "This is a message!");
每次运行此行时都会出现问题(每次启动应用程序时)都会挂起事件,因此在我的日志文件中我最终会遇到类似的事情:
Fist run:
[TIME] InvApp这是一条消息!
第二次运行:
[TIME] InvApp这是一条消息!
[TIME] InvApp这是一条消息!
第三轮:
[TIME] InvApp这是一条消息!
[TIME] InvApp这是一条消息!
[TIME] InvApp这是一条消息!
......依此类推。
如何确保此代码只执行一次,或取消/清除exec命令?