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

소켓통신 inputstream

0 추천

액티비티 밖에 스레드 클래스를 두어 서버로 전송하는 것은 완료했는데

서버로부터 받은 바이트 배열을 MainActivity에 값을 전달하고 싶습니다..

어떻게 해야 할까요

public class Worker extends Thread {
    private Socket socket;
    InputStream in;
    OutputStream out;


    public void Send() {
        try {
            out.write(1);
            out.flush();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public void run() {
        try {
            socket = new Socket("192.168.1.225", 5001);
            out = socket.getOutputStream();
            in = socket.getInputStream();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    protected void onStop() {
        this.onStop();
        try {
            socket.close();
        } catch(IOException e) {
            e.printStackTrace();
        }
    }
}
qpoas (1,240 포인트) 님이 2017년 9월 22일 질문

1개의 답변

+1 추천
 
채택된 답변
activity 에서 thread 를 instance 할 때 callback listener 를 같이 등록 시키세요

대략 sudo 코드는 아래와 같습니다.

 

yourcallback.java

interface YourCallback { void onReceive(String data); }

 

activity.java

YourCallback mListener = new YourCallback() {

void onReceive(String data) {

// TODO

}

};

new Worker(mListener) ;

 

worker.java

class Worker extends Thread {

YourCallback mListener;

public Worker(YourCallback listener) {

mListener = listener;
}

public void run() {

// TODO

if (mListener != null) { mLisetner.onReceive($RECEIVED_DATA); }

}
aucd29 (218,390 포인트) 님이 2017년 9월 22일 답변
qpoas님이 2017년 9월 28일 채택됨
...