如何停止当前正在执行的命令

时间:2015-05-20 16:18:12

标签: android android-logcat android-runtime java-threads

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时 文件,我看到最后一行已被添加。 我的错是什么?

我需要启动流,关闭此活动并参观其他活动,然后返回并关闭日志记录机。

1 个答案:

答案 0 :(得分:1)

只需使用@hegazy方法并在Application课程中保存对处理的引用。不要忘记在你的清单中register。希望你有我的想法。

类似的东西:

((App)getApplicationContext).process = Runtime.getRuntime().exec(cmd);

而不是在需要时接受:

((App)getApplicationContext).process.exec("logcat -d");