无法从线程类向内部处理程序类发送消息

时间:2015-04-23 04:06:41

标签: android multithreading android-handler android-handlerthread

假设我有以下课程......

 private class SignalRConnection extends Thread {

        private final int CONNECT = 0;
        private final int STOP = 1;

        private SignalRHandler signalRHandler = null;

        @Override
        public void run() {
            Looper.prepare();
            signalRHandler = new SignalRHandler();
            Looper.loop();
            signalRHandler.sendMessage(Message.obtain(null, CONNECT));
        }

        public void end() {
            Message msg = Message.obtain(null, STOP);
            Bundle bundle = new Bundle();
            bundle.putBoolean(IMMORTAL, false);
            msg.setData(bundle);
            signalRHandler.sendMessage(msg);
        }

        public void immortal() {
            Message msg = Message.obtain(null, STOP);
            Bundle bundle = new Bundle();
            bundle.putBoolean(IMMORTAL, true);
            msg.setData(bundle);
            signalRHandler.sendMessage(msg);
        }

        private class SignalRHandler extends Handler {

            private final SignalRClient client;

            SignalRHandler() {
                client = new SignalRClient(getResources().getString(R.string.notification_host), "issueshub");
            }

            @Override
            public void handleMessage(Message msg) {
                switch (msg.what) {
                    case CONNECT:
                        client.connect();
                        break;
                    case STOP:
                        /*
                         * Clean up, and terminate.
                         */
                        Bundle b = msg.getData();
                        Boolean isImmortal = b.getBoolean(SignalRService.IMMORTAL);

                        client.disconnect();
                        if (isImmortal) {
                            client.immortal();
                        }
                        break;
                }
            }
        } // End of SignalRHandler
    } // End of SignalR Connection

然后开始......

    signalRConn = new SignalRConnection();
    signalRConn.start();

问题是SignalRHandler无法收到主要课程发送的内容。

我确定我做错了一些事情请建议......

0 个答案:

没有答案