Android - Использование обработчиков? - PullRequest
7 голосов
/ 01 июня 2011

Есть ли проблемы с использованием нескольких обработчиков в одном действии.

Я заметил, что во всех примерах, представленных на официальном сайте Android, они используют один обработчик и обнаруживают различные действия в зависимости от значения «что», это из-за управления памятью и большого объема памяти, используемого обработчиком? Или я должен назвать это «плохим кодом» и сделать это чистым способом (несколько обработчиков, каждый из которых отвечает за определенную задачу)

Handler handler = new Handler()
{
    @Override
    public void handleMessage(Message msg) {
      if (msg.what == 0){
         // do something
      }
      else if (msg.what == 1){
         // do something else
      }
    }
}

OR

Handler taskHandlerA = new Handler()
{
    @Override
    public void handleMessage(Message msg) {
         // do something
    }
}

Handler taskHandlerB = new Handler()
{
    @Override
    public void handleMessage(Message msg) {
         // do something else
    }
}

Ответы [ 2 ]

9 голосов
/ 01 июня 2011

Нет, такого ограничения нет (обработчик является просто получателем сообщения), но если вы хотите сделать это, более распространенным подходом является наличие одного обработчика, в который вы публикуете объекты Runnable.

5 голосов
/ 01 июня 2011

Вот хорошее прочтение Loopers and Handlers .

Когда создается Handler, оно автоматически регистрируется с его Thread Looper.Это заставляет меня думать, что вам не нужно несколько Handler для одного потока.Activity, в частности, тот, который использует несколько Thread, может использовать несколько Handler.

...