并且预先感谢您的帮助。将套接字对象传递给Android的另一个活动
在Android中的活动之间传递对象的最佳做法是什么?我读到了将序列化对象作为字符串传递给putExtras并将其添加到捆绑包的可能性,然后再开始下一个intent。但是是一个可串行化的Socket?
我想通过插座,为PrintWriter,BufferedReader类的实例,主要活动打开的连接和输入/输出流,因此在未来的意图可以关闭等。
我也想知道是否有后是其他/更好的选择来考虑,因为我猜有。
谢谢。
并且预先感谢您的帮助。将套接字对象传递给Android的另一个活动
在Android中的活动之间传递对象的最佳做法是什么?我读到了将序列化对象作为字符串传递给putExtras并将其添加到捆绑包的可能性,然后再开始下一个intent。但是是一个可串行化的Socket?
我想通过插座,为PrintWriter,BufferedReader类的实例,主要活动打开的连接和输入/输出流,因此在未来的意图可以关闭等。
我也想知道是否有后是其他/更好的选择来考虑,因为我猜有。
谢谢。
您必须使用公共静态变量或使用单例模式的包装类。
如果你不想启动服务,你可以创建一个全局变量。
对于像这样的插座创建一个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);
}
感谢@SimonSays。 1)是否使用常用的静态变量和建议这样做?使用静态变量有什么缺点? 2)这两个活动我想通过显然扩展活动类之间的对象已经。你能给我一个例子,你将如何绕过与单身变量包装他们与另一个类? – user1555863 2012-07-27 07:06:25
1.我不会说推荐使用静态变量,但有时它只是传递物体的最简单方法。我个人,我尽量避免它,但仍然使用它来。缺点是你不知道对象什么时候会被垃圾收集。 2.这是相反的方式。你可以将你的流对象封装在单例中,而不是活动。 – SimonSays 2012-07-27 21:59:36