繁体   English   中英

从辅助线程处理UI

[英]Manipulating the UI from a worker thread

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

此外,开发指南说:

[从辅助线程操作UI]可能导致未定义和意外的行为,这可能很难且费时地进行跟踪。

但是在我看来,不难理解CalledFrowWrongThreadException含义。

文档是在引入CalledFrowWrongThreadException之前编写的,还是在某些情况下未引发异常? (或其中,误差是确实很难且耗时的追查)

就像Java中的Swing和.NET中的WinForms一样,在某些情况下,所讨论的方法不会检查以确定您是从正确的线程进行调用的,因此不一定会引发预期的异常。

提供上述文档的方式来掩护自己,并解释说,实际上需要很多的努力来解决,如果你不知道,或者知道它, 之前错误的线程异常有史以来违规代码抛出,这可能一个简单的想法待在路上。

这里的主要问题是检查哪个线程正在调用给定的函数会导致处理开销。 几乎可以肯定有一些呼叫由于这种原因而没有进行检查-这会减慢UI渲染的速度。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM