Создать обработчик в классе без ошибки get "Looper not ready"? - PullRequest
1 голос
/ 10 марта 2011

В моей игре есть класс игровых объектов, который должен использовать Handler для публикации отложенного запуска. Однако все, что я пытаюсь создать обработчик в классе объекта, я получаю сообщение об ошибке:

Невозможно создать обработчик внутри потока который не вызвал Looper.prepare ()

Я гуглил какое-то решение, но все они используют другое решение, а не Handler. Есть ли решение использовать Handler в обычном классе? Или какое-либо решение для запуска Runnable после определенной задержки?

Я не могу спать, потому что это приостановило всю мою игру!

Спасибо.

1 Ответ

2 голосов
/ 10 марта 2011

Возможно, вы создаете Handler из потока, не являющегося пользовательским интерфейсом. Либо (1) вы явно присоединяете свой обработчик к потоку пользовательского интерфейса, передавая петлю потока пользовательского интерфейса в конструктор Handler, что означает, что сообщения, отправленные в Handler, также выполняются в потоке пользовательского интерфейса, либо (2) вы создаете новый Looper для не-пользовательского интерфейса: см. здесь .

edit относительно (1): вам придется каким-то образом передавать петлитель потока пользовательского интерфейса «игровому объекту», например, при его создании. Вы можете получить ссылку на петлитель пользовательского интерфейса, вызвав getMainLooper() в контексте (например, из действия).

Альтернативой может быть создание обработчика в упражнении и просто передать обработчик вашему игровому объекту.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...