从工作线程操作UI

时间:2011-04-20 16:38:58

标签: android multithreading

Andoid UI工具包不是线程安全的,当您尝试从工作线程修改UI时,您会获得CalledFrowWrongThreadException(或类似的东西)。

此外,开发指南说:

  

[从工作线程操作UI]可能导致未定义和   意外行为,可以   跟踪困难且耗时   下来。

但我觉得很难理解CalledFrowWrongThreadException的意思。

文档是在引入CalledFrowWrongThreadException之前编写的还是仍然存在不抛出异常的情况? (或者在追踪错误确实困难且耗时的情况下)

2 个答案:

答案 0 :(得分:0)

就像Java中的Swing和.NET中的WinForms一样,可能是有问题的方法没有检查以确定您是从正确的线程调用的情况,因此不< em>必然抛出预期的异常。

提供上述文档是一种掩盖自己的方法,并解释一个简单的想法,如果你不了解它,或者理解它,之前错误的线程,实际上需要付出很多努力才能解决违规代码会引发异常,这可能会在以后发生。

答案 1 :(得分:0)

这里的主要问题是检查调用给定函数的线程会产生处理开销;几乎可以肯定的是,调用不会检查这个原因 - 它会减慢UI渲染速度。

通过扩展,UI函数不是线程安全的原因是,如果您通过互斥代码进入等式,性能命中率会变得更高。