Мне нужно создать действие, которое бы отображало журналы Android в режиме реального времени:
//In background thread:
Process process = Runtime.getRuntime().exec("logcat");
BufferedReader bufferedReader = new BufferedReader(
new InputStreamReader(process.getInputStream()));
StringBuilder log=new StringBuilder();
String line = "";
while ((line = bufferedReader.readLine()) != null && !isInterrupted())
{
log.append(line);
mLoggerActivity.updateLog(log.toString());
}
...
public class LoggerActivity extends Activity
{
private void updateLog(final String log) // Will be called from inner class
{
mUIThreadHadler.post
(
new Runnable()
{
@Override
public void run()
{
mLoggerView.setText(log);
}
}
);
}
...
}
Я думаю, что обновление пользовательского интерфейса в каждой строке неэффективно - но какие еще варианты у меня есть?Мне нужно что-то как bufferedReader.canReadLine () - так что я могу пакетное обновление StringBuilder перед публикацией log.toString () в основной поток.