Я знаю, это звучит как странный вопрос.
У меня есть приложение Xamarin.Android.Я просматриваю свой код и убираю вещи, которые были слишком агрессивно обернуты вызовами на RunOnUiThread
.Насколько я понимаю, код, который запускается, например, в ответ на события пользовательского интерфейса, уже находится в потоке пользовательского интерфейса и поэтому не нуждается в переносе.Мне не нравится идея о RunOnUiThread
вызовах, просто разбросанных повсюду, как волшебная пиковая пыль.
Я удалил кучу этих вызовов и сохранил те, которые, на мой взгляд, необходимы.Когда я запускаю приложение, все отлично работает.Но даже ни одного сбоя с первой попытки не показалось слишком хорошим, чтобы быть правдой, поэтому в качестве проверки работоспособности я попытался преднамеренно завершить работу приложения, добавив код обновления пользовательского интерфейса в местах, где я ожидалтребуется завернуть в RunOnUiThread
.Однако ничто из того, что я делаю, не вызывает такого эффекта!
Меня это беспокоит, что где-то происходит какое-то волшебство, которое мешает мне увидеть проблему.
Последнее, что я попробовал, о чем я думалбезусловно, вылетало бы приложение, было бы использовать Java.Util.Timer
для выполнения Java.Util.TimerTask
, который устанавливает Alpha на ImageView
равным 0,5.Но, тем не менее, приложение весело гудит вместе!
Теперь я абсолютно подозреваю, что что-то - возможно, какая-то новая функция ОС - незаметно исправляет проблемы, но у клиентов, работающих в какой-то другой конфигурации, будут происходить сбои.Я хочу видеть ошибку, чтобы быть уверенным, что когда я ее не вижу, все в порядке.
Итак, что я могу сделать, чтобы преднамеренно получить ошибку Only the original thread that created a view hierarchy can touch its views
?