美文网首页AndriodStudio
2018-01-09AndriodStudio开发问题小结2Ha

2018-01-09AndriodStudio开发问题小结2Ha

作者: 奥莉安娜的棒棒糖 | 来源:发表于2018-01-09 17:39 被阅读0次

    在连接服务器时可以用Handler进行通信下面举列说明:

    我在连接服务器时的代码,写在单独的方法中:

    在线程中实例化一个Handler会自动绑定当前线程,加粗的地方是将message发出去

    /** * 连接 * * @return*/ 

     public boolean connect(final Handler handler) {

            if (socket == null || socket.isClosed()) {

                new Thread(new Runnable() {

                    @Override                public void run() {

                        try {

                            socket = new Socket(dsName, dstPort);

                        } catch (UnknownHostException e) {

                            e.printStackTrace();

                        } catch (IOException e) {

                            throw new RuntimeException("连接错误: " + e.getMessage());

                        }

                        try {

                            // 输入流,为了获取客户端发送的数据                        InputStream is = socket.getInputStream();

                            byte[] buffer = new byte[1024];

                            int len = -1;

                            while ((len = is.read(buffer)) != -1) {

                                final String result = new String(buffer, 0, len);

                                Message msg = Message.obtain();

                                msg.obj = result;

                                msg.what = STATE_FROM_SERVER_OK;

                                handler.sendMessage(msg);

                            }

                        } catch (IOException e) {

                            e.printStackTrace();

                        }

                    }

                }).start();

            }

            return true;

        }

    在MainActivity中获取Handler的信息:

    private Handler mHandler = new Handler(){

            public void handleMessage(android.os.Message msg) {

                switch (msg.what) {

                case TcpManager.STATE_FROM_SERVER_OK:

                    String result = (String) msg.obj;

                    //这里可以将你得到的消息打印出来,或者怎么用都行

                    break;

                default:

                    break;

                }

            };

        };

    相关文章

      网友评论

        本文标题:2018-01-09AndriodStudio开发问题小结2Ha

        本文链接:https://www.haomeiwen.com/subject/mdjgnxtx.html