并提前感谢您的帮助。
在 Android 中的活动之间传递对象的最佳做法是什么?我读到了将可序列化对象作为字符串传递的可能性,方法是通过 putExtras 将它们添加到包中,而不是用它开始下一个意图。但是 Socket 是可序列化的吗?
我想在主要活动打开连接和输入/输出流之后传递 Socket 、 PrintWriter 、 BufferedReader 的实例,因此下一个意图可以关闭等。
我还想知道是否还有其他/更好的选择可以考虑,因为我想有。
谢谢。
您必须使用公共静态变量或使用单例模式的包装类。
如果您不想启动服务,您可以创建一个全局变量。
为该套接字创建一个单例模式,如下所示:
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);
}