2012-07-26 190 views
2

并且预先感谢您的帮助。将套接字对象传递给Android的另一个活动

在Android中的活动之间传递对象的最佳做法是什么?我读到了将序列化对象作为字符串传递给putExtras并将其添加到捆绑包的可能性,然后再开始下一个intent。但是是一个可串行化的Socket?

我想通过插座,为PrintWriter,BufferedReader类的实例,主要活动打开的连接和输入/输出流,因此在未来的意图可以关闭等。

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

谢谢。

回答

1

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

+0

感谢@SimonSays。 1)是否使用常用的静态变量和建议这样做?使用静态变量有什么缺点? 2)这两个活动我想通过显然扩展活动类之间的对象已经。你能给我一个例子,你将如何绕过与单身变量包装他们与另一个类? – user1555863 2012-07-27 07:06:25

+0

1.我不会说推荐使用静态变量,但有时它只是传递物体的最简单方法。我个人,我尽量避免它,但仍然使用它来。缺点是你不知道对象什么时候会被垃圾收集。 2.这是相反的方式。你可以将你的流对象封装在单例中,而不是活动。 – SimonSays 2012-07-27 21:59:36

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); 
    } 
相关问题