Android - Вопрос по посту отложенных и тем - PullRequest
3 голосов
/ 03 июня 2010

У меня есть вопрос о postDelayed. Документы Android говорят, что он добавляет runnable в очередь и работает в потоке пользовательского интерфейса. Что это значит?

Так, например, тот же поток, который я использую для создания макета, используется для запуска Runnable?

Что, если я хочу, чтобы он был независимым потоком, который выполняется при создании макета и определении активности?

Спасибо Chris

Ответы [ 2 ]

3 голосов
/ 03 июня 2010

Да, это будет работать в потоке пользовательского интерфейса.

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

Thread t = new Thread(new Runnable(){});
t.start()

Но если вы хотите вообще изменить пользовательский интерфейс в ответ на то, что может сделать фоновый поток, вы можете использовать postDelayed ().

Любые изменения в пользовательском интерфейсе должны выполняться в основном потоке пользовательского интерфейса.

1 голос
/ 04 июня 2010

Поздравляем! Вы нашли одно из мест, где есть более одного решения.

  1. Обработчики и PostDelayed могут быть удобными и легкими способами регулярного вызова ваших действий на переднем плане. Даже сообщения используются повторно. Они используются в примере программы Snake (Snake / SnakeView.java / sleep ()), чтобы заставить змею двигаться. Он запускается как «отправить сообщение с задержкой на 500 мс», через 500 мс перехватить его в HandleMessage (по умолчанию для обработчиков), переместить, а затем отправить его снова. Даже сообщение повторно используется с receiveMessage (). Я использовал их для обновления кнопки, пока она нажата.

  2. Потоки немного тяжелее. Вы можете использовать их в качестве фона или там, где вы уже привыкли к запуску потока. Создайте новую тему (aRunnable) .start (). Я не использовал их много на Android.

  3. Запустите Intent с помощью StartActivityForResult () и перехватите результат с помощью OnActivityResult, чтобы сделать стандартный RPC. См. Шаг 2 примера блокнота для получения дополнительной информации.

  4. Посмотрите больше Intents для запуска для различных сценариев. Я считаю, что помещение вашего «намерения создать и запустить» в отдельные функции помогает в обслуживании и отладке.

Удачи!

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