我想在第一个活动中按下按钮时创建TCP套接字,然后从任何活动访问同一个套接字对象(不确定在每个活动中关闭和打开套接字是个好主意)。
我尝试了很多方法让我的思想设置在Singleton实例上是通过任何活动访问对象的最佳解决方案,我的问题是因为这是一个TCP套接字我没有看到AsyncTask是聪明的想法(可以只执行一次,无视我有一个对象实例的观点)我不知道如何将常规线程与单例组合。
单身人士代码:
public class TCPSingleton extends Application {
private static TCPSingleton singleInstance;
String HostIP;
int tcp_port;
Socket clientSocket;
DataOutputStream outToServer;
public static TCPSingleton getInstance() {
return singleInstance;
}
@Override
public void onCreate() {
super.onCreate();
singleInstance = this;
singleInstance.initializeInstance();
}
protected void initializeInstance() {
this.HostIP = "10.0.0.6";
this.tcp_port = 9871;
try {
this.clientSocket = new Socket(this.HostIP, this.tcp_port);
this.outToServer = new DataOutputStream(clientSocket.getOutputStream());
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void send_data(String data){
try {
this.outToServer.writeBytes(data);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
如何在这里合并一个帖子(或者除了单身之外还有什么比这更好的想法)。