为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

泛舟湖上清波郎朗 2022-04-21 19:11:04
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的初始化么?

查看完整回答
反对 回复 2022-04-24
  • 1 回答
  • 0 关注
  • 278 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号