2013-09-05 23 views
0

我有几个视图,由计时器任务每秒更新一次。他们本身不能invalidate(),因为“只有创建视图层次结构的原始线程才能触及其视图”。如何从另一个线程无效()一个视图?

有一个叫做runOnUiThread的函数,但是我需要一个Activity来运行它。

我怎样才能解决这个问题?编号:是为了什么?我如何保证无效和更新会很快发生(如果UI线程不忙)?

+0

为什么你使用一个Timer(以及它后面的一个线程)来完成这样一项简单的任务?使用处理程序代替 – pskink

+0

@pskink计时器正在模拟蓝牙侦听器线程。 – Andreas

回答

1

1)

这是什么postInvalidate()是?

According to the Docs

使用此无效从非UI线程的视图。

invalidate()是在UI Thread

2)

如何保证更新Views我会的失效和更新将很快发生 (如果UI线程不忙)?

而且从文档

导致一个无效对随后的循环事件循环发生的同一部分

所以我想这很快就取决于你的“的定义”。正如文档所说,它应该发生在下一个事件循环中