您不能将一个 Socket 从一个活动“传递”到另一个活动,但您确实有其他选择。
选项 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(socket) 或 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"
然后,您可以通过在 Activity 中获取对应用程序的引用来访问它:
MyApplication app = (MyApplication)activity.getApplication();
Socket socket = app.getSocket();