如何使用服务从中发送和接收消息来最好地实现全局套接字?

时间:2012-07-11 06:26:45

标签: android sockets

我需要与服务器建立开放连接,并且我希望在不同的活动中使用相同的Socket,因此服务可能是最佳解决方案。我想到了这些可能性:

  • 使用IntentService并将广播发送回活动 - 但我不知道当服务获得“Stopped”时套接字的状态会发生什么(IntentService在运行最后一个onHandleIntent后自动停止 - 来自{{3 }}))。

  • 使用带有单例的IntentService来保存套接字 - 不知道这有多可行。

  • 带有Messenger的AIDL服务或BoundService - 我不确定这里会出现什么问题。

我最感兴趣的是最好的方法,所以如果你有更好的建议,请告诉我们谢谢。

2 个答案:

答案 0 :(得分:1)

如果我是你,我会做像这样的事情。 1.创建一个专门用于网络的课程,

公共类NetworkProxy {

private static NetworkProxy sInstance;

public static NetworkProxy getInstance() {
    if (sInstance == null) {
        sInstance = new NetworkProxy();
    }
    return sInstance;
}

public void connect() {
    // to be done
}

public void disconnect() {
    // to be done
}

public void transact() {
    // network communications goes here
}

}

每次任意Activity都需要与服务器进行交互。只需调用NetworkProxy.getInstance()。transact();

答案 1 :(得分:-1)

我认为最好的方法是使用带线程的服务。