【问题标题】:Transfer Socket from one Activity to another将 Socket 从一个 Activity 转移到另一个
【发布时间】:2016-08-04 17:35:20
【问题描述】:

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

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

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

【问题讨论】:

    标签: android sockets android-intent android-activity


    【解决方案1】:

    您不能将一个 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();
    

    【讨论】:

    • 不客气。不要忘记为其他人将答案标记为已接受(当然是在你让它工作之后!)~
    • 谢谢你拯救了我的一天!!
    • 我还没有考虑过使用静态...这是我与高级开发人员的距离
    猜你喜欢
    • 1970-01-01
    • 2017-12-28
    • 1970-01-01
    • 1970-01-01
    • 2011-05-20
    • 1970-01-01
    • 1970-01-01
    • 2020-10-19
    • 1970-01-01
    相关资源
    最近更新 更多