Почему RunOnUiThread вызывает исключение в Android? - PullRequest
0 голосов
/ 25 декабря 2018

Я использую таймер в моем приложении для Android (программирование на c#), который редактирует текст TextView каждый раз, когда срабатывает таймер, поэтому мне нужно использовать RunOnUiThread.

    TextView text;
    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);
    System.Timers.Timer _timer = new System.Timers.Timer();
            text = FindViewById<TextView>(Resource.Id.textView4);
     _timer.Interval = 100;
            _timer.Elapsed += OnTimedEvent;
            _timer.Enabled = true;
            _timer.Start();
      }
    private void OnTimedEvent(object sender, ElapsedEventArgs e)
    {

        try
        {
            this.RunOnUiThread(() =>
        {
             text.Text += "bm";

        });
         }
            catch (Exception ex)
            {
                Toast.MakeText(this, ex.ToString(), ToastLength.Short).Show();
            }
      }

При каждом первом запуске моего приложения, когда вызывается метод OnTimedEvent, генерируется незапланированное исключение без каких-либо подробностей, а сообщение Toast не отображается, что означает, что catch не вызывается.Но во втором запуске все в порядке и метод OnTimedEvent вызывается нормально.Я попытался удалить RunOnUiThread, и исключение не было выдано, но text.Text не был обновлен.Почему это происходит?

Редактировать

Отслеживание стека:

12-25 17: 06: 20,847 W / GAv4 (13655):CampaignTrackingReceiver не зарегистрирован, не экспортирован или отключен.Кампания установки 12-25 17: 06: 20.987 W / System.err (13655): удалить не удалось: ENOENT (нет такого файла или каталога): /data/user/0/dabboussi.RandomG/shared_prefs/com.google.android.gms.analytics.prefs.xml.bak 12-25 17: 06: 21.342 D / SecWifiDisplayUtil (13655): значение метаданных: нет 12-25 17: 06: 21.352 D / ViewRootImpl (13655): # 1 mView = com.android.internal.policy.PhoneWindow $ DecorView {16fd198 IE ..... R ..... ID 0,0-0,0} 12-25 17: 06: 21.782 D / ViewRootImpl (13655): MSG_RESIZED_REPORT: ci =Rect (0, 96 - 0, 0) vi = Rect (0, 96 - 0, 0) или = 1 12-25 17: 06: 22.067 I / временная шкала (13655): временная шкала: идентификатор Activity_idle: android.os.BinderProxy@ 9d3df7b время: 234415682 12-25 17: 06: 27,567 D / ViewRootImpl (13655): ViewPostImeInputStage processPointer 0 12-25 17: 06: 27,657 D / ViewRootImpl (13655): ViewPostImeInputStage processPointer 1 12-25 17: 06: 06: 06: 27/ ViewRootImpl (13655): MSG_RESIZED: ci = Rect (0, 96 - 0, 0) vi = Rect (0, 96 - 0, 1012) или = 1 12-25 17: 06: 30.997 D / ViewRootImpl (13655):Ввод завершен в ImeInputStage.12-25 17: 06: 31.062 D / ViewRootImpl (13655): ввод завершен в ImeInputStage.12-25 17: 06: 31.102 D / ViewRootImpl (13655): MSG_RESIZED: ci = Rect (0, 96-0, 0) vi = Rect (0, 96-0, 0) или = 1 12-25 17:06: 32.482 D / ViewRootImpl (13655): ViewPostImeInputStage processPointer 0 12-25 17: 06: 32.567 D / ViewRootImpl (13655): ViewPostImeInputStage processPointer 1 Загруженная сборка: System.dll [внешняя] 12-25 17: 06: 32.642 I / временная шкала(13655): Временная шкала: Идентификатор Activity_launch_request: время dabboussi.RandomG: 234426256 Начало потока: # 2 12-25 17: 06: 33.082 D / SecWifiDisplayUtil (13655): Значение метаданных: нет 12-25 17: 06: 33.082 D / ViewRootImpl(13655): # 1 mView = com.android.internal.policy.PhoneWindow $ DecorView {e762cd IE ..... R ..... ID 0,0-0,0} Тема начата: # 3 Тема начата:# 4 Тема начата: # 5 Тема начата: # 6 Тема начата: # 7 12-25 17: 06: 33.142 D / ViewRootImpl (13655): MSG_RESIZED_REPORT: ci = Rect (0, 96 - 0, 0) vi = Rect (0, 96 - 0, 0) или = 1 Начало потока: # 8 Начало потока: # 9 Начало потока: # 10 Начало потока: # 11 Начало потока: # 12 Начало потока: # 13 Произошло необработанное исключение.

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