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

서버에서 보내는 메시지를 실시간으로 텍스트 뷰에 넣는법

0 추천
기존 소스가 버튼누르면 에디트텍스트에 있는값을 서버로 보내고 서버는 받자마자 그값을 되돌려주면

다시 받아서 텍스트뷰에 띄우는데

버튼을 누르지않고 서버에서 메시지 보내면 바로바로 텍스트뷰에 띄우려면 어떻게 해야하나요 ?
엘희 (500 포인트) 님이 2014년 3월 26일 질문
버튼을 눌러야만 서버에서 메시지를 받을 수 있나요?
네 음.. 1번클라이언트에서 a,b,c,d,e 순으로 서버로 보내고
2번클라이언트에서 f를 보내면 텍스트뷰에 버튼한번에 a 한번더누르면 b 식으로 오네요 oncreate에 넣으면 시작과동시에 멈춰버리고 조건같은걸줘야하는거같은데 잘모르겟어요 ㅠㅠ
해당 부분에대한 소스코드가 있으면 답변이 더 수월할꺼같네요.
public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        mHandler = new Handler();
 
        final EditText et = (EditText) findViewById(R.id.ed_msg);

        Button btn = (Button) findViewById(R.id.btn_send);

         tv = (TextView) findViewById(R.id.txt_chat);
         

        try {
             Socket socket = new Socket(ip, port);
           reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            toServer = new DataOutputStream(socket.getOutputStream());
            
        } catch (IOException e1) {

            // TODO Auto-generated catch block

            e1.printStackTrace();

        }
     
       
        btn.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {               
                    //tv.setText(et.getText().toString());
                    try {         
                        if (et.getText().toString() != null && !et.getText().toString().equals("")) {                        
                        toServer.writeUTF(et.getText().toString());
                        toServer.flush();
                        et.setText(null);
                    }   
                        tv.append(reader.readLine()+"\n");
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }                    
                }
            
        });
      
    }

}
일단 이런식이거든요 ..ㅠ_ㅠ

1개의 답변

+1 추천
 
채택된 답변
가장 간단한 건 쓰레드를 만들어서 그 안에서 몇초의 딜레이를 주고 무한반복으로 서버에서 읽어오는 게 제일 쉬울 것 같구요. 알람매니저를 이용해 할수도 있고. 메세지 오브젝트를 만들어 핸들러에 딜레이를 주고 실행도 가능하고 여러가지 방법이있습니다. 지금 전화기로 쓰는 중이라 예제는 검색해보시라고 할 수 밖에 없네요 죄송 ㅜㅜ
AndroidDictator (1,660 포인트) 님이 2014년 3월 27일 답변
엘희님이 2014년 4월 8일 채택됨
...