从工作线程操作UI



android UI工具包不是线程安全的,当你试图从工作线程修改UI时,你会得到CalledFrowWrongThreadException(或类似的东西)。

此外,开发指南说:

[从工作线程操作UI]可能导致未定义的和意外的行为,这可能是追踪起来既困难又费时下来。

但对我来说,理解CalledFrowWrongThreadException的意思似乎并不困难。

文档是在引入CalledFrowWrongThreadException之前编写的吗?还是仍然存在没有抛出异常的情况?

这里的主要问题是检查哪个线程正在调用给定的函数会导致处理开销;几乎可以肯定的是,调用不检查正是由于这个原因——它会减慢UI渲染。

通过扩展,UI函数不是线程安全的原因是,如果您将互斥锁代码放入等式中,则性能损失会变得更大。

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

提供上面的文档是一种掩盖自己的方式,并解释了一个简单的想法,实际上需要大量的努力来解决,如果你不知道它,或理解它,错误的线程异常被违规代码抛出之前,这可能是很晚的事情。

最新更新