Java缓冲读取器逐字节读取时断言

时间:2017-05-31 15:25:01

标签: java android shell android-studio

我刚刚编写了一个需要从程序输出中读取的小型Android应用程序并实时显示。经过很长一段时间后,我终于完成了一个简单的事情,它从一个带有缓冲读取器的Inputstream读取,逐个字节地读取。但是,不知何故,当有很多东西被显示出来时,它会挂起一定的状态并开始大量口吃。所以不是全部显示100行,而是首先显示10行,然后是一分钟后显示所有其他行。有任何解决这个问题的方法吗?我正在运行Android Studio 3 Canary预览版。附加了将stdout打印到Textview的代码。

public void stdout(final InputStream i){
    Runnable r = new Runnable() {
        @Override
        public void run() {
            TextView m = (TextView) findViewById(R.id.textView3);
            m.setMovementMethod(new ScrollingMovementMethod());
            BufferedReader br = new BufferedReader(new InputStreamReader(i));
            int line;
            try{
                while(true){

                    line = br.read();
                    if (line == -1)
                    {
                        break;
                    }
                    else
                    {

                        final StringBuilder b = new StringBuilder();
                        final int finalLine = line;
                        b.append(String.valueOf((char)finalLine));
                        final String t = b.toString();
                        m.post(new Runnable(){
                            @Override
                            public void run(){
                                TextView m = (TextView) findViewById(R.id.textView3);
                                m.append(t.toString());

                            }
                        });

                    }
                }
            }
            catch (Exception e)
            {
                m.setText("error" + e.toString());
            }
        }
    };

    new Thread(r).start();
}

0 个答案:

没有答案