마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

콘솔창 말고 애뮬레이터에 출력하려고 합니다.

0 추천

소켓통신을 쓰며 현재 서버에서 읽어오는 코드가 입니다. 바로 아래 사진처럼 콘솔창이 아닌 에뮬레이터 ui상에 띄우고싶은데 어떻게 해야될까요..?

System.out.println(ans)
var ans = DataInputStream(socket.getInputStream()).read()
con2 (150 포인트) 님이 2022년 10월 3일 질문

1개의 답변

0 추천
Layout 파일에 로그를 보여줄 View를 하나 추가하시구요. 그리고 findViewById로 해당 뷰를 찾으셔서 액티비티라면 아래처럼 runOnUiThread 안에서 해당뷰에 로그를 뿌려주면 됩니다.

private void displayLog(String s){
        runOnUiThread (new Thread(new Runnable() {  
            public void run() {
                textView.setTwxt(s); // 상황에 따라append(s);
             }
        }));
    }
spark (226,420 포인트) 님이 2022년 10월 3일 답변
runOnUiThread 사용하는 이유는 socket의 경우는 IO라 메인쓰레드에서 열 수 없고, 백그라운드쓰레드에서 처리해야 하는데, 뷰에 대한 접근은 메인쓰레드에서만 가능하기 때문에, 백그라운드쓰레드를 메인쓰레드 전환하기 위해서 사용합니다.
...