我需要与服务器建立开放连接,并且我希望在不同的活动中使用相同的Socket,因此服务可能是最佳解决方案。我想到了这些可能性:
使用IntentService并将广播发送回活动 - 但我不知道当服务获得“Stopped”时套接字的状态会发生什么(IntentService在运行最后一个onHandleIntent后自动停止 - 来自{{3 }}))。
使用带有单例的IntentService来保存套接字 - 不知道这有多可行。
带有Messenger的AIDL服务或BoundService - 我不确定这里会出现什么问题。
我最感兴趣的是最好的方法,所以如果你有更好的建议,请告诉我们谢谢。
答案 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)
我认为最好的方法是使用带线程的服务。