【发布时间】:2011-08-02 04:33:58
【问题描述】:
我有一个自定义视图,它本身包含多个视图。我已经做到了,当单击此容器视图中的一个视图时,它将运行一个“计时器”线程,该线程需要每秒更新一个 TextView,也在容器视图内。当我想每秒更新 TextView 时,就会出现我的问题。显然,这并不像我想象的那么容易。我像这样在我的容器视图中实现了 Runnable,并在单击按钮以启动计时器时执行线程:
public void run() {
while(runnning) {
// if one second has passed, update the Textview
}
}
我得到了典型的 cannot-touch-views-outside-hierarchy 异常,这基本上意味着它没有在 UI 线程上运行。我不想在这里使用post(Runnable),因为我不想一直等到线程结束才更新一秒钟。将它所在的整个 Activity 传递给自己运行 runOnUiThread(Runnable) 对我来说也是不切实际的。那么有人可以告诉我如何去做这件事吗?如果有人需要澄清,请告诉我!
【问题讨论】:
标签: android multithreading view runnable ui-thread