如何一次为Android Java连接socket.io?

时间:2019-07-16 22:15:40

标签: java android socket.io

我正在使用socekt.io构建一个聊天应用程序,因此我创建了一个后台服务来处理Socekt.io。但是,每当我调用套接字全局变量时,它都为null。

我试图将其连接到Application类并从那里调用它,但似乎没有希望。唯一有效的方法是当我以这种方式添加连接而没有任何方法时:

Service.java

{
    try {
        AppMainClass app = (AppMainClass) getApplication();
        setSocket(app.getSocket());
        sh = new SharedPreferencesHandler(mContext);
        // Set Connection Status to True
        isConnected = true;
        sh.saveAppPrefs("isConnected", "true");
    } catch (URISyntaxException e) {
        throw new RuntimeException(e);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

AppMainClass.java


@Override
public void onCreate() {
    super.onCreate();

    Log.d(TAG, "onCreate");

    try {
        setSocket(IO.socket(Constants.REAL_TIME_CHAT_SERVER_URL));
        getSocket().connect();
    } catch (URISyntaxException e) {
        e.printStackTrace();
    }

}

这有一个很大的缺点,因为每次调用该方法或启动该类时它都会重新连接到服务器,而我不能只是将其添加到onStartCommnd()方法中,因为当我调用getSocket()时(“ getter “),则返回null,就好像从未调用过setSocket()一样。

最后,我最近才知道不建议在服务中使用套接字,但我不想依赖于GCM或任何其他类型的连接。

谢谢。

0 个答案:

没有答案