这是我的MainActivity.java
public class MainActivity extends Activity implements OnItemClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//new thread for communication.
Thread communicationThread = new Thread() {
public void run() {
Communication communication_object = new Communication();
communication_object.start();
}
};
communicationThread.start();
}
通信类实现了与服务器的TCP/IP连接,运行良好。
但现在我需要从另一个活动类访问该通信对象,特别是login()方法。我可以从另一个类访问在该线程中运行的communication_object.login()吗?
您可以创建一个Thread并使其成为Singleton和/或对Object执行同样的操作。
由于您不能序列化线程或将线程放入Bundle中,如果您想从另一个活动访问它,您将把它存储在Activity之外。
您也可以在MainActivity中创建一个Singleton线程,并使用静态方法访问它。
public class MainActivity extends Activity implements OnItemClickListener {
public static Thread communicationThread = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//new thread for communication.
communicationThread = new Thread() {
public void run() {
Communication communicationObject = new Communication();
communicationObject.start();
}
};
communicationThread.start();
}
public static Thread getCommunicationThread() {
if (communicationThread == null) { // init your Thread
} return communicationThread;
}
public class LoginActivity extends Activity {
MainActivity.getCommunicationThread()...
}