如何从另一个线程android访问对象



这是我的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()...
}

最新更新