我开发了一个游戏,它将使用socket.io连接,我的服务器正在用node Js编写,我的android客户端使用socket.io,现在,我对您的问题是:
如何在不失去与服务器的连接的情况下切换活动,我至少有4个活动,聊天,游戏视图,在线玩家列表等等.
当我打开我的应用程序时,我创建了连接,当我登录服务器时,我想将活动切换到另一个.
有什么建议么?
解决方法:
尝试制作单例类SocketIO服务
在第一次活动时初始化socketio连接以建立您与服务器的连接,这里是我的示例服务类
public class SocketIOClIEnt { private static final String serverUrl = "http://example-socket-server.jit.su"; private static SocketIO socket; private static SocketIOClIEnt instance; private static Activity act; private static String ID; public SocketIOClIEnt() { } public static voID initInstance(String uID) throws MalformedURLException { if (instance == null) { instance = new SocketIOClIEnt(); instance.initID(uID); if (SocketIOClIEnt.getSocket() == null) { SocketIOClIEnt.setSocket(new SocketIO()); } SocketIOClIEnt.connectIO(); } } public static voID setActivity(Activity a) { SocketIOClIEnt.act = a; } public static SocketIO getSocket() { return socket; } public static voID setSocket(SocketIO socket) { SocketIOClIEnt.socket = socket; } public String getID() { return ID; } private voID initID(String uID) { if (SocketIOClIEnt.ID == null) { SocketIOClIEnt.ID = uID; } } public static voID connectIO() throws MalformedURLException { try { SocketIO.setDefaultSSLSocketFactory(SSLContext.getDefault()); } catch (NoSuchAlgorithmException e1) { // Todo auto-generated catch block e1.printstacktrace(); } SocketIOClIEnt.getSocket().connect(serverUrl, new IOCallback() { @OverrIDe public voID onMessage(JsONObject Json, IOAckNowledge ack) { // Todo auto-generated method stub } @OverrIDe public voID onMessage(String data, IOAckNowledge ack) { } @OverrIDe public voID one rror(SocketIOException socketIOException) { } @OverrIDe public voID ondisconnect() { // Todo auto-generated method stub } @OverrIDe public voID onConnect() { } @OverrIDe public voID on(String event, IOAckNowledge ack, Object... args) { } }); } public static voID emit(String event, Object args) throws MalformedURLException { if (SocketIOClIEnt.getSocket().isConnected() == false) { SocketIOClIEnt.getSocket().reconnect(); } SocketIOClIEnt.getSocket().emit(event, args); } public static voID emitWitHackNowledge(String event, Object args) throws MalformedURLException { if (SocketIOClIEnt.getSocket().isConnected() == false) { SocketIOClIEnt.getSocket().reconnect(); } SocketIOClIEnt.getSocket().emit(event, new IOAckNowledge() { @OverrIDe public voID ack(Object... args) { // Todo auto-generated method stub } }, args); }}
在第一个活动中,我输入以下代码:
SocketIOClIEnt.initInstance(androID_ID);
它是创建对象并尝试连接到服务器,如果需要事件或其他 *** 作,可以在onConnect或ondisconnect上进行处理
切换活动时,您仍连接到服务器,如果要关闭连接,请使用以下命令:
SocketIOClIEnt.getSocket().disconnect();
总结 以上是内存溢出为你收集整理的Android socket.io切换活动而不会丢失连接全部内容,希望文章能够帮你解决Android socket.io切换活动而不会丢失连接所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)