并提前感谢您的帮助。
在Android中的活动之间传递对象的最佳做法是什么?我读到了将可序列化对象作为字符串传递的可能性,方法是通过putExtras将它们添加到一个包中,然后用它来启动下一个意图。但是Socket是否可序列化?
我想传递Socket,PrintWriter,BufferedReader的实例,在主活动打开连接和输入/输出流之后,所以下一个意图可以关闭等等。
我还想知道是否有其他/更好的选择要考虑,因为我猜有。
感谢。
答案 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);
}