2016 - 2024

感恩一路有你

UI线程什么意思 ios开发中为什么更新ui都要放在主线程中?

浏览量:1495 时间:2021-03-14 03:42:50 作者:admin

ios开发中为什么更新ui都要放在主线程中?

原因如下:1。操作系统实践线程的优先级最高。2为了用户体验,理论上可以立即看到效果,但根据操作系统的实际情况会有所不同。自绘制UI取决于绘制方法。此外,在windows中,有时我们需要调用API来触发重绘事件,从而使窗口无效。IOS/Windows/Android不能在其他线程中更新UI一般来说,在后台线程中更新UI时,大部分UI会直接崩溃,但是在早期。Net visual studio中,IDE将默认UI的background update属性设置为true,以便可以在后台直接更改UI。然而,事实上,这是公正的。Net高级封装。实际上,它仍然是在UI线程中进行更新的,但作为后台更新只是一个特例

在UIKit这样大的框架中保证线程安全是一项重大任务,这将带来巨大的成本。UIKit不是线程安全的。如果在两个线程中设置相同的背景图像,程序将崩溃,因为背景图像被释放两次。或者一个线程遍历以找到一个子视图,但该子视图在另一个线程中被删除,这将导致混乱。Apple可以将大多数绘图方法和类(如uicolor)重写为线程安全的,但仍建议将UI操作保留在主线程中。事实上,如果要更新子线程中的其他UI,必须等到子线程结束,并且响应用户单击的按钮的UI更新是及时的。无论是在主线程还是在子线程中,它都没有什么意义,因为子线程中的所有其他UI更新都必须等到子线程的生命周期结束。在子线程中更新UI是不可能的。我们看到的UI更新是在执行子线程的代码之后,它自动进入主线程并在子线程中执行UI更新的函数堆栈。两者之间的时间非常短,这使得人们错误地认为线程分割过程可以更新UI。如果子线程一直在运行,则无法通知子线程中UI更新函数堆栈的主线程,即无法更新。只有少数用户界面可以直接更新,因为打开一个线程,就会得到当前的环境。例如,当点击一个按钮时,这个按钮的响应方式是打开一个子线程,子线程中这个按钮的UI更新可以及时完成,比如改变上面的背景图片,但是没有任何意义。

为什么更新UI都放在主线程中?

我先给你个提示。Android只能用UI线程(即主线程)更新UI。让我们这样说:UI线程==主线程。

1. 如果要在子线程中的数据发生变化时更新主线程的UI,可以使用消息机制以及消息和处理程序的组合。

2. 还可以使用特定的控制方法,例如listview适配器中的notifydatachang()。好像就是这个方法

3。在视图中,还可以在数据更改后使用invalidatea()或postinvalidata()。

基本上,我希望我能帮助您解决这些常见问题。我们来讨论一下。

UI线程什么意思 ui交互设计 子线程更新ui

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。