2014-09-07 3 views
1

Я хотел бы создать два потока (T1 и T2) из ​​основного потока, которые могут общаться друг с другом. Я смотрю на лучший способ добиться этого. Моя идея - сделать это с помощью обработчика. Это нормально? Проблема в том, что я не знаю, как T1 может получить ссылку обработчика для T2 и наоборот.Android backgorund thread communication

Пожалуйста, помогите.

EDIT.

Позвольте мне объяснить ситуацию более подробно. Если в T1 возникает какое-то условие, я хочу получить сигнал T2, чтобы T2 мог выполнять некоторую другую работу.

+0

, если они связаны крови (ребенок отношения родитель) не должен действительно быть проблемой, если вы не должны обеспечить общее место, где они могут зарегистрировать себя таким образом обеспечивая связь между ними – pskink

ответ

1

Вы можете сделать что-то вроде этого:

public class Test { 

    static abstract class MyThread extends Thread implements Callback{ 
     Callback mCallback; 
     public void setCallBack(Callback pCallBack){ 
      mCallback = pCallBack; 
     } 

    } 

    static interface Callback{ 
     public void onAction(Object... args); 
    } 

    public static void main(String args[]){ 
     MyThread T1 = new MyThread(){ 

      @Override 
      public void onAction(Object... args) { 
       //code when onAction is called. 

      } 

      public void run(){ 
       //T1 thread code here 

       //if some condition 
       //call the Callback 
       mCallback.onAction(); 
      } 

     }; 

     MyThread T2 = new MyThread(){ 
      @Override 
      public void onAction(Object... args) { 
       //code when onAction is called. 
       //"Other work" 
      } 

      public void run(){ 
       //T2 thread code here 

      } 

     }; 

     T1.setCallBack(T2); 
     T2.setCallBack(T1); 

     T1.start(); 
     T2.start(); 
    } 
}