这是我的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()吗?
答案 0 :(得分:3)
您可以创建一个Thread并使其成为Singleton和/或对Object执行相同操作。
由于您无法序列化或将线程放入Bundle中,因此如果您想从另一个活动中访问它,则会将其存储在Activity之外。
您也可以在MainActivity中创建一个Singleton Thread,并使用静态方法访问它。
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()...
}