Как проверить, если работа UI распараллеливает в Android? [дубликат]

Мне не устанавливали Visual Studio на моей машине больше (и я использую Linux), но я действительно помню, что был мастер, скрытый где-нибудь в одном из меню, которые предоставили доступ к разработчику класса.

С этим мастером, Вы могли определить детали всех своих классов, включая методы и атрибуты. Если я помню хорошо, была опция, через которую Вы могли попросить, чтобы VS создал методы set и методов get автоматически для Вас.

я знаю, что это довольно неопределенно, но проверьте его, и Вы могли бы найти его.

42
задан Pang 26 April 2014 в 08:02
поделиться

3 ответа

Не похоже, что в SDK есть способ для этого. Проверка выполняется в классе ViewRoot и выполняется путем сравнения Thread.currentThread () с членом класса, который назначается в конструкторе, но никогда не отображается.

Если вам действительно нужно эту проверку у вас есть несколько вариантов реализации:

  1. поймать android.view.ViewRoot $ CalledFromWrongThreadException
  2. сообщение Runnable в представление и проверить Thread.currentThread ()
  3. используйте обработчик , чтобы сделать то же самое

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

11
ответ дан 26 November 2019 в 23:12
поделиться

Используйте Looper.getMainLooper().getThread() для получения потока пользовательского интерфейса. Вы можете проверить, является ли он текущим потоком, используя следующее выражение:

Looper.getMainLooper().getThread() == Thread.currentThread()
110
ответ дан 26 November 2019 в 23:12
поделиться

Вы также можете использовать runOnUiThread, он требует только runnable, который будет запущен в потоке ui

9
ответ дан 26 November 2019 в 23:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: