我想启动一项服务,该服务需要通过开放的Socket
连接发送和接收某些内容。 Socket
是一个对象的字段,如下所示:
public class A implements Serializable {
Socket socket;
}
我计划将此对象作为额外的Intent传递:
A a = getInstanceOfA(); // Get an instance of A from somewhere.
intent.putExtra("A", a);
当然,A
是可序列化的,因为它需要是,以便将其作为额外的意图。可是等等。套接字不可序列化。
我该如何解决?
transient
,因此它不会被序列化吗?或者,当我这样做时,不再能够通过该套接字发送一些字节了吗?Service
和BroadcastReceiver
并使用其他方法? PS:我已经read something关于在InputStream
之间转移Socket
和Activity
,但是给出的答案不是很明确。
答案 0 :(得分:0)
如果没有一些可能是脏的黑客,这是不可能的。
作为Chris Stratton - 他提到的信用 - 可以通过静态对象或单例检索它来绕过问题。
或者,可以改变应用程序结构,因此服务本身会创建Socket或控制它。