我可以在主线程(UI 线程)之外创建 UI 吗?
Posted
技术标签:
【中文标题】我可以在主线程(UI 线程)之外创建 UI 吗?【英文标题】:Can I create UI outside main thread (UI Thread)? 【发布时间】:2013-04-09 18:12:34 【问题描述】:出于充分的理由(计算数百个视图的测量值),我的 UI 生成时间很长(大约 20 秒)。 我(想?)必须在主线程中创建它们,然后我运行一个进度对话框让用户等待。 虽然,主线程已经被其他计算的创建超载了。 我是否可以在主线程之外创建 UI,尽管我必须测量多个视图?
【问题讨论】:
我认为如果你真的有数百个观点,你就做错了。您可能想要使用 ListView。 “我的 UI 生成时间很长(大约 20 秒),原因很充分(计算数百个视图的测量值)”——“计算数百个视图的测量值”应该需要几毫秒。除了一开始就没有“数百个视图”的反复建议之外,使用 Traceview 找出为什么要花这么长时间。 【参考方案1】:虽然有些人说他们已经让它工作了,Dianne and Romain say 都认为你不应该在讨论中这样做,因为整个 UI 树是单线程的。他们说它不能保证有效,应该避免。
我想不出任何需要同时实例化和绘制数百个视图的场景。也许您需要使用 ListView,或者在您的应用中实现某种延迟加载。
【讨论】:
以上是关于我可以在主线程(UI 线程)之外创建 UI 吗?的主要内容,如果未能解决你的问题,请参考以下文章