一直显示报错;这个为null?

private void startMessage() {
socket msocket = new socket(mPort);
msocket.start();
msocket.getHandler().obtainMessage(1).sendToTarget();
}
private class socket extends Thread {
private ServerSocket serverSocket;
private Socket _mSocket;
private int dstPort;
private boolean isloop = true;
private Handler _mHandler;
private OutputStream outp;
private InputStream inp;

public socket(int dstPort) {
// TODO Auto-generated constructor stub
this.dstPort = dstPort;
}

public void run() {
Looper.prepare();
_mHandler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
case 1:
try {

serverSocket = new ServerSocket(dstPort);
while (isloop) {
_mSocket = serverSocket.accept();

}
} catch (IOException e) {
}
break;

}
};
Log.d(tag, "???????????????????");
Looper.loop();
}

public Handler getHandler() {
return _mHandler;
}

一直报msocket.getHandler().obtainMessage(1).sendToTarget();这个为null

泛舟湖上清波郎朗
浏览 280回答 1
1回答

繁花如伊

你是多线程。意思是2个线程都在跑。你的支线程start了,但是你的主线程还在执行,立刻到了msocket.getHandler().obtainMessage(1).sendToTarget();这个时候,你能保证你的支线程已经执行了run()【虽然他已经start了,但是start了,就代表他执行速度超过主线程,完成了run?】,完成了handler的初始化么?
打开App,查看更多内容
随时随地看视频慕课网APP