【问题标题】:getRuntime Android show processgetRuntime Android 显示流程
【发布时间】:2015-04-30 18:55:31
【问题描述】:

我正在做一个简单的应用程序,显示 android 中的当前进程,就像一个 shell。

我的应用程序执行 ls、cd、makedir 和其他命令,但 top 或 htop 命令不执行。 (htop 无法识别,最重要的是,应用程序冻结)。我需要root吗?我已经在 unrooted android 中下载了终端应用程序,并且 top 命令可以正常工作。

我的应用有 2 个类。一个主体和一个外壳

主课

    public void onClick(View arg0) {
            // TODO Auto-generated method stub
            ShellExecuter exe = new ShellExecuter();
            command = input.getText().toString();

            String outp = exe.Executer(command);
            out.setText(outp);
            Log.d("Output", outp);
        }

外壳类

public String Executer(String command) {

        StringBuffer output = new StringBuffer();

        Process p;
        try {
            p = Runtime.getRuntime().exec(command);
            p.waitFor();
            BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));

            String line = "";           
            while ((line = reader.readLine())!= null) {
                output.append(line + "\n");
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
        String response = output.toString();
        return response;

    }

为什么应用程序的某些命令可以工作,而 top 例如却不能?

【问题讨论】:

    标签: android shell process


    【解决方案1】:

    谢谢。 adb shell 用 top 命令显示进程

    但是

    p = Runtime.getRuntime().exec("top");
    

    可能不行??

    我不明白导致我的应用冻结

    还是 top -n 1 不固定?

    【讨论】:

      【解决方案2】:

      如果您已连接设备,请转到 shell 以使用计算机命令行中的以下命令查看可用的命令:

      adb 外壳

      乍一看,您将能够看出“top”是一项“显示和更新有关进程的排序信息”的作业,它阻塞了 shell 命令行,因此,在您的应用程序中锁定了执行该命令的线程.

      希望对你有帮助!

      问候!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-07-03
        • 1970-01-01
        • 2015-08-04
        • 1970-01-01
        • 1970-01-01
        • 2013-11-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多