Android socket.io切换活动而不会丢失连接

Android socket.io切换活动而不会丢失连接,第1张

概述我开发了一个游戏,它将使用socket.io连接,我的服务器正在用nodejs编写,我的android客户端使用socket.io,现在,我对您的问题是:如何在不失去与服务器的连接的情况下切换活动,我至少有4个活动,聊天,游戏视图,在线玩家列表等等.当我打开我的应用程序时,我创建了连接,当我登录服务器

我开发了一个游戏,它将使用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切换活动而不会丢失连接所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1095594.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存