2

并提前感谢您的帮助。

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

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

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

谢谢。

4

2 回答 2

1

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

于 2012-07-26T20:08:30.827 回答
1

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

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

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);
    }
于 2014-12-02T20:24:26.827 回答