Использует ли обработчик поток связывания Если я использую обработчик из действия anoter? - PullRequest
0 голосов
/ 02 декабря 2011

Это вопрос, у меня есть:

  • Деятельность A
  • Деятельность B

Из A я хочу общаться с B, затем я используюобработчик, созданный на B, чтобы сделать это следующим образом:

ActivityB.handlerB.sendMessage(msg);

Тогда чего я не знаю, будет ли он использовать поток ActivityA или поток ActivityB.

Для того, чтобы позволитьActivityB Thread сделай свою работу, это хорошо сделано?

1 Ответ

2 голосов
/ 02 декабря 2011

Если ActvityB не создал обработчик B с использованием Looper не по умолчанию, все сообщения, отправленные обработчику B, будут доставлять свои сообщения только в том же потоке, в котором был создан handlerB.

Так, например, если ActivityB создал обработчик вочень типичным способом, из обратного вызова события активности, handlerB будет доставлять свои сообщения в пользовательский интерфейс по умолчанию.

Итак, если ActivityB сделан таким образом, ActivityA безопасно вызывать handlerB.sendMessage ():

public class ActivityB extends Activity {
  Handler handlerB;

  public void onCreate(Bundle bundle) {
    this.handlerB = new Handler() {
      public void handleMessage(Message message) {
        ;; // Do something
      }
    };
  }
}

Итак, в большинстве случаев ваш ответ: Да.

...