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