将套接字对象传递给Android上的另一个活动

时间:2012-07-26 19:54:25

标签: java android eclipse sockets

并提前感谢您的帮助。

在Android中的活动之间传递对象的最佳做法是什么?我读到了将可序列化对象作为字符串传递的可能性,方法是通过putExtras将它们添加到一个包中,然后用它来启动下一个意图。但是Socket是否可序列化?

我想传递Socket,PrintWriter,BufferedReader的实例,在主活动打开连接和输入/输出流之后,所以下一个意图可以关闭等等。

我还想知道是否有其他/更好的选择要考虑,因为我猜有。

感谢。

2 个答案:

答案 0 :(得分:1)

您必须使用公共静态变量或使用单例模式的包装类。

答案 1 :(得分:0)

如果您不想启动服务,可以创建一个全局变量。

为该套接字创建一个Singleton模式,如下所示:

public class SocketSingleton {


private static Socket socket;

public static void setSocket(Socket socketpass){
    SocketSingleton.socket=socketpass;
}

public static Socket getSocket(){
    return SocketSingleton.socket;
    //return socket;
}

}

然后在代码中只更改全局值:

        public void changeScreen(Socket socket, String ip, int port) {
        SocketSingleton.setSocket(socket);
        Intent i = new Intent(getActivity().getApplicationContext(), ControlActivity.class);
        i.putExtra("ip", ip);
        i.putExtra("port",port);
        startActivity(i);
    }