繁体   English   中英

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

[英]Transfer Socket from one Activity to another

我试图将Socket属性从一个Activity转移到另一个Activity但我不能使用Intent.putExtra()方法。

socket = new Socket("10.0.0.9", port);
i = new Intent(getBaseContext(), MainActivity.class);
i.putExtra("mysocket", socket);

我如何将Socket从一个Activity转移到另一个Activity

您不能将“套接字”从一个活动传递到另一个活动,但您确实有其他选择。

选项1 创建一个带有对Socket的静态引用的类,并以这种方式访问​​它。 在您的第一个Activity中设置Socket,然后可以从第二个Activity中静态访问该Socket。

例如。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM