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

时间:2015-02-21 00:16:17

标签: android sockets android-intent

我想启动一项服务,该服务需要通过开放的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,因此它不会被序列化吗?或者,当我这样做时,不再能够通过该套接字发送一些字节了吗?
  • 或者我应该退出使用ServiceBroadcastReceiver并使用其他方法?
  • 还有另一种方法可以实现上述目标吗?

PS:我已经read something关于在InputStream之间转移SocketActivity,但是给出的答案不是很明确。

1 个答案:

答案 0 :(得分:0)

如果没有一些可能是脏的黑客,这是不可能的。

作为Chris Stratton - 他提到的信用 - 可以通过静态对象或单例检索它来绕过问题。

或者,可以改变应用程序结构,因此服务本身会创建Socket或控制它。