将Socket从一个Activity转移到另一个Activity

时间:2014-04-23 15:39:32

标签: android sockets android-intent android-activity

我正在尝试将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}}转移到另一个{?}}?

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();