如何在 Android 中使用 Socket 作为 Intent extra?

How to use Socket as Intent extra in Android?

我想启动一项服务,该服务需要通过打开的 Socket 连接发送和接收某些内容。那Socket就是一个对象的字段,像这样:

public class A implements Serializable {
    Socket socket;
}

我正计划将此对象作为 Intent extra 传递:

A a = getInstanceOfA(); // Get an instance of A from somewhere.
intent.putExtra("A", a);

当然,A 是可序列化的,因为它需要序列化,以便将其作为额外的意图。可是等等。套接字不可序列化。

我该如何解决?

PS: 我已经read something 关于在Activity 之间转移InputStreamSocket,但是给出的答案不是很清楚。

如果没有一些可能肮脏的技巧,这是不可能的。

正如 Chris Stratton – 归功于他 – 提到的那样,可以通过静态对象或单例检索来绕过该问题。

或者,可以更改应用程序结构,让服务自己创建或控制 Socket。