Java Android Websocket正在使用中

Java Android Websocket正在使用中,java,android,http,asynchronous,websocket,Java,Android,Http,Asynchronous,Websocket,我需要在我的应用程序中建立一个Websocket,它总是在侦听传入的消息。(我想通过Websocket控制应用程序) 当有新消息时,检查消息内容并执行任务。 示例:如果websocket接收到,则播放视频,, 到目前为止,我已经在我的主要活动中使用[koush/AndroidAsync][1]库成功地构建了套接字。 但当我播放视频时,我会进入视频活动,因此我失去了连接 这是我到目前为止主要活动中的代码。我的问题是:如何让这个方法始终在后台运行 private void connectToPASo

我需要在我的应用程序中建立一个Websocket,它总是在侦听传入的消息。(我想通过Websocket控制应用程序)

当有新消息时,检查消息内容并执行任务。 示例:如果websocket接收到
,则播放视频,

到目前为止,我已经在我的主要活动中使用
[koush/AndroidAsync][1]
库成功地构建了套接字。 但当我播放视频时,我会进入视频活动,因此我失去了连接

这是我到目前为止主要活动中的代码。我的问题是:如何让这个方法始终在后台运行

private void connectToPASocket()
    {
        makeLog("i", "connectToPASocket()");

        //Checking
        if(socket!=null && socket.isOpen())


            return;

        //Initiate web socket connection
        AsyncHttpClient.getDefaultInstance().websocket(SOCKET_ADDR, null, new AsyncHttpClient.WebSocketConnectCallback()
        {   @Override
            public void onCompleted(Exception ex, WebSocket webSocket)
            {   makeLog("w", "connectToPASocket() > AsyncHttpClient > onCompleted");


                if (ex != null) {
                    makeLog("w", "connectToPASocket() > AsyncHttpClient > onCompleted > if (ex!=null)");
                    ex.printStackTrace();
                    return;
                }





                    socket = webSocket;
                    socket.setStringCallback(new StringCallback() {
                        public void onStringAvailable(String s) {
                            makeLog("v", "socket.setStringCallback > onStringAvailable - s => " + s);

                            System.out.println("I got a string: " + s);
                            message = s;
                            runOnUiThread(onMessageReceive);


                        }//end onStringAvailable
                    });//end socket.setStringCallback


                    socket.setDataCallback(new DataCallback() { //Find out what this does
                        @Override
                        public void onDataAvailable(DataEmitter emitter, ByteBufferList bb) {
                            makeLog("v", "socket.setDataCallback > onDataAvailable | emitter=> " + emitter + " | bb => " + bb);

                            System.out.println("I got some bytes!");
                            // note that this data has been read
                            bb.recycle();
                        }
                    });//end webSocket.setDataCallback



            }//end onCompleted
        });//end AsyncHttpClient.getDefaultInstance()
    }//end connectToPASocket

    Runnable onMessageReceive = new Runnable() {
        @Override
        public void run() {



            if(message.equals("PlayVideo1")) { Utils.makeAlertDialog(HomeActivity.this, "WebSocket Message :", message, false);

            playVideo("one"); }

if(message.equals("stop")) { pVideo("stop");}
if(message.equals("pause")) { pVideo("pause");}
        }// end public void run()
    };// end Runnable onMessageReceive = new Runnable()
方法payVideo()将位于MainActivity中

方法pVideo()将在VideoActivity中使用服务组件:

它应该会起作用。但不知道什么时候是停止服务的最佳时机(因为它可以“永远”工作)

可能在MainActivity关闭后,向服务发送消息“它也应该在X分钟后关闭”(因此有时间将活动重新连接到服务)