为什么RunOnUiThread在Android中引发异常?

时间:2018-12-25 11:56:08

标签: c# android xamarin exception xamarin.android

我正在我的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也没有更新。 为什么会这样?

修改

Stacktrace:

  

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 I.E ...   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 / Timeline(13655):时间轴:Activity_idle ID:   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:28.092 D / 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 / Timeline(13655):   时间轴:Activity_launch_request ID: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   I.E ...... 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发生未处理的异常。

0 个答案:

没有答案