我正在尝试将Socket
属性从一个Activity
转移到另一个Intent.putExtra()
,但我无法使用socket = new Socket("10.0.0.9", port);
i = new Intent(getBaseContext(), MainActivity.class);
i.putExtra("mysocket", socket);
方法。
Socket
如何将Activity
从{{1}}转移到另一个{?}}?
答案 0 :(得分:13)
您无法将“套接字”从一个活动传递到另一个活动,但您还有其他选择。
选项1 。创建一个带有对Socket的静态引用的类,并以这种方式访问它。在第一个Activity中设置Socket,然后可以从第二个Activity中静态访问它。
例如
public class SocketHandler {
private static Socket socket;
public static synchronized Socket getSocket(){
return socket;
}
public static synchronized void setSocket(Socket socket){
SocketHandler.socket = socket;
}
}
然后,您可以通过从应用程序的任何位置调用SocketHandler.setSocket(套接字)或SocketHandler.getSocket()来访问它。
选项2 。覆盖应用程序并在那里对套接字进行全局引用。
例如
public class MyApplication extends Application {
private Socket socket;
public Socket getSocket(){
return socket;
}
public void setSocket(Socket socket){
SocketHandler.socket = socket;
}
}
此选项将要求您在清单文件中指向您的应用程序。在清单的应用程序标记中,您需要添加:
android:name="your.package.name.MyApplication"
然后,您可以通过在“活动”中获取对应用程序的引用来访问它:
MyApplication app = (MyApplication)activity.getApplication();
Socket socket = app.getSocket();