int count = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button start = (Button) findViewById(R.id.start);
start.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
try {
String[] cmd = new String[] { "logcat", "-f",Environment.getExternalStorageDirectory()+"/log.txt", "-v", "time" };
Runtime.getRuntime().exec(cmd);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
thread.start();
}
});
Button stop = (Button) findViewById(R.id.stop);
stop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
Runtime.getRuntime().exec("logcat -d");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
Button addLog = (Button) findViewById(R.id.addLog);
addLog.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.e("logTag", Integer.toString(count));
count ++ ;
}
});
}
我想使用 start
按钮开始保存应用日志,并使用 stop
停止它。
addLog
按钮用于查看是否有更多行添加到 log.txt
文件中。
start
按钮工作正常,但问题是它永远不会以 stop
结束。
即使在按下 stop
后,当我按下 addLog
按钮并检查 log.txt
文件中,我看到最后几行已添加。
我有什么错?
我需要启动流,关闭此 Activity 并浏览其他 Activity ,然后返回并关闭日志记录机。
最佳答案
是的,您可以通过将 Process 保存在运行时的 exec() 方法返回的变量中并对该变量调用 destroy()
来实现这一点。
public abstract void destroy ()
Terminates this process and closes any associated streams.
让我们将 Process 记录为全局变量;
private Process p;
以及执行时
p = Runtime.getRuntime().exec(cmd);
这就是它的停止方式。
void stopProcess() {
if (p != null) {
p.destroy();
} else {
Log.d(TAG, "stopProcess: p==null");
}
}
关于android - 如何停止当前正在执行的命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30355197/