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