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
时
文件,我看到最后一行已被添加。
我的错是什么?
我需要启动流,关闭此活动并参观其他活动,然后返回并关闭日志记录机。
答案 0 :(得分:1)
只需使用@hegazy方法并在Application课程中保存对处理的引用。不要忘记在你的清单中register。希望你有我的想法。
类似的东西:
((App)getApplicationContext).process = Runtime.getRuntime().exec(cmd);
而不是在需要时接受:
((App)getApplicationContext).process.exec("logcat -d");