我正在我的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发生未处理的异常。