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 stubthis.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
1 回答
繁花如伊
TA贡献2012条经验 获得超12个赞
你是多线程。意思是2个线程都在跑。
你的支线程start了,但是你的主线程还在执行,立刻到了msocket.getHandler().obtainMessage(1).sendToTarget();
这个时候,你能保证你的支线程已经执行了run()【虽然他已经start了,但是start了,就代表他执行速度超过主线程,完成了run?】,完成了handler的初始化么?
- 1 回答
- 0 关注
- 279 浏览
添加回答
举报
0/150
提交
取消
