Gre*_*ein 10 sockets android 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);
Run Code Online (Sandbox Code Playgroud)
我如何Socket
从一个转移Activity
到另一个?
Cru*_*ceo 14
您不能将"套接字"从一个活动传递到另一个活动,但您确实有其他选择.
选项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;
}
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以通过从应用程序的任何位置调用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;
}
}
Run Code Online (Sandbox Code Playgroud)
此选项将要求您在清单文件中指向您的应用程序.在清单的应用程序标记中,您需要添加:
android:name="your.package.name.MyApplication"
Run Code Online (Sandbox Code Playgroud)
然后,您可以通过在"活动"中获取对应用程序的引用来访问它:
MyApplication app = (MyApplication)activity.getApplication();
Socket socket = app.getSocket();
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5946 次 |
最近记录: |