我刚刚编写了一个需要从程序输出中读取的小型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();
}