2012-12-20 2 views
0

나는 메시지를 TextView에 인쇄하여 기존 텍스트에 추가하는 void log(String s) 함수가 있습니다. 내부적으로는 HandleUI에 로그 메시지를 빠르게 표시하는 방법은 무엇입니까?

setText(getText().toString() + s)을 사용하지만 텍스트가 커지면 전체 UI 스레드가 고정됩니다.

UI 스레드에 로그 출력 (예 : Log.d)을 신속하게 넣을 수있는 방법이 있습니까?

+0

오류 문자열이 너무 커서 UI 스레드의 속도가 느려지는 경우 아무 래도 읽기 어려울 가능성이 있습니다. ACRA 또는 비슷한 것을 설치해 보셨습니까? UI에서 UI를 관리하는 것보다 관리 오류를 조금 더 쉽게 만듭니다. –

+0

@RubberMallet 예,하지만 오류가 아닌 일부 메시지를 기록하려고합니다. 그들은 Log.d를 사용하여 잘 기록하지만 UI에서는 수행하는 방법을 설명합니다. ArrayAdapter를 설정할 수는 있지만 원하지는 않습니다. ACRA는 좋지만 여기에는 관련이 없습니다. –

답변

1

방금 ​​이런 식으로 업데이트 할 수 있습니까?

handler.post(new Runnable(){ 
    public void run() { 
     setText(...) 
    } 
}); 

또는 로그 메시지에 StringBuilder를 사용하십시오. setText (getText() + 새 로그)는 실제로 느립니다.

protected StringBuilder logs = new StringBuilder(); 

void newLogMessage(String msg) { 
    logs.append(msg); 
    setText(logs.toString()); 
} 
관련 문제