Android 为什么设计只有主线程更新UI

Android 为什么设计只有主线程更新UI:1、单线程更新UI方案简单成熟;2、从执行效率看;3、综合考虑。单线程更新UI方案,优势就很明显,整体设计可能是最简单的,每个控件的设计只需要考虑单线程运行就可以,完全不必关系其他线程更新UI。

一、单线程更新UI方案简单成熟

单线程更新UI方案,优势就很明显,整体设计可能是最简单的,每个控件的设计只需要考虑单线程运行就可以,完全不必关系其他线程更新UI。

而且这套方案非常成熟,在Android 之前,swing qt windows 几乎绝大部分图形界面api 都会使用这个单线程方案。

二、从执行效率看

前面说了,如果一个加锁的api 和不加锁的api 比较,那肯定不加锁效率高对吧,但是,这么说确实很笼统,如果合理设计一套多线程更新ui 的库,整体性能未必会比单线程差,只是想实现这样一套系统的复杂程度,可能不只是翻倍那么简单,设计越复杂,带来的问题是 潜在bug 可能会多,但是这些,在设计ui系统 的时候未必是这样考虑的,如果业务复杂,效果会更好,那么我相信大部分企业还是会设计一个复杂的系统的。

三、综合考虑

多线程更新UI,不管如何设计都会绕不开一个问题,就是竞争,而这个竞争,是整个UI系统的,而不是单独一个控件,大部分情况下,一个线程可能同时更新的是过个控件,而要确保我一次更新的所有控件是同步更新的,所以要保证这个逻辑,其实我们就要确保一个问题,同一时刻。永远只允许一个线程去更新UI。不能保证这一点,就会造成业务逻辑可能各种问题,甚至各种死锁。

既然同一个时刻只能一个线程更新,那设计成单线程是不是就更好呢,到这里,其实还是不够全面的,还有个因素就是事件相应。如果多线程更新的情况下,其实这个是不容易实现的, 反而单线程,就好实现一些。

来源:https://blog.csdn.net/weixin_61845324/article/details/124067940

延伸阅读

Python标准库的主要功能

文本处理,包含文本格式化、正则表达式匹配、文本差异计算与合并、Unicode支持,二进制数据处理等功能

文件处理,包含文件操作、创建临时文件、文件压缩与归档、操作配置文件等功能

操作系统功能,包含线程与进程支持、IO复用、日期与时间处理、调用系统函数、写日记(logging)等功能

网络通信,包含网络套接字,SSL加密通信、异步网络通信等功能

网络协议,支持HTTP,FTP,SMTP,POP,IMAP,NNTP,XMLRPC等多种网络协议,并提供了编写网络服务器的框架

W3C格式支持,包含HTML,SGML,XML的处理

其它功能,包括国际化支持、数学运算、HASH、Tkinter等

文章标题:Android 为什么设计只有主线程更新UI,发布者:E.Z,转载请注明出处:https://worktile.com/kb/p/51600

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
E.ZE.Z认证作者
上一篇 2023年5月8日
下一篇 2023年5月8日

相关推荐

  • JSP中的<% %>和<% =%>有什么区别

    区别只有一点:<% %> 标识里面的是jsp代码。<%=变量 %> 是 <% out.println(变量) %> 的简写方式。<% %>叫做脚本片段,其中写的内容会翻译在Servlet的Service方法中,显然可以在Service方法中定义局部变量…

    2023年2月13日
    68200
  • MQTT是否支持消息的压缩和解压缩

    MQTT协议确实支持消息的压缩与解压缩,但这并非协议本身的特性。1、通常是在应用层处理压缩逻辑,2、通过在发布者端将消息内容压缩后发送,并在订阅者端接收后进行解压缩,3、可使用如Gzip等压缩算法。 消息压缩主要依赖于客户端库或应用本身的实现。MQTT协议位于OSI模型的会话层,因而它关注的是消息的…

    2024年1月5日
    36400
  • 怎么选择WFA与RPA?

    什么是工作流自动化?什么是机器人流程自动化?在这篇文章中,我们将探讨两者的区别,并帮助您决定哪一种方式更适合您的业务。

    2023年8月2日
    38700
  • 创新型需求管理方法助力企业快速发展

    坚持创新是企业发展的不二法门。在需求管理领域,采用创新型需求管理方法使企业在激烈的市场竞争中脱颖而出。1、引入敏捷和精益管理原则,2、采用数据驱动的需求预测,3、实施用户体验至上的设计思想,4、构建跨功能协作的需求管理团队,5、利用最新技术实现需求的自动化管理。 其中,引入敏捷和精益管理原则是建立一…

    2023年12月18日
    27500
  • 集团管理项目如何选择

    集团管理项目选择应该基于集团的战略目标、项目的预期收益与成本、风险评估、资源可用性和项目对集团整体资源配置的影响等因素。 通常,这一选择过程需要一套系统的方法论、评估工具和决策机制。在评估项目的预期收益与成本时,应当深入计算项目的投资回报率(ROI)和净现值(NPV),以及其他财务和非财务指标。 一…

    2024年4月10日
    6200
  • 产品升级是devops的什么

    标题:产品升级在DevOps中扮演的角色 摘要:产品升级在DevOps体系中,占据着至关重要的地位。它通常涉及软件开发生命周期内所有阶段的连续改进、自动化与测试过程的集成以及改善用户体验1、保持系统安全2、给产品带来新功能3、提高运行效率。尤其是在保持系统安全方面,它通过定期更新软件来修补已知的安全…

    2024年3月26日
    7800
  • T5和BART有什么区别

    T5和BART的区别有:1、模型的设计哲学;2、预训练策略;3、结构细节;4、输入和输出格式;5、应用领域;6、模型的性能。在深度学习和自然语言处理领域,T5与BART都是先进的预训练模型,被广泛应用于各种NLP任务。 1、模型的设计哲学 T5:T5,即“Text-to-Text Transfer …

    2023年7月31日
    1.6K00
  • tcp和udp的区别是什么

    tcp和udp的区别是:1、TCP是面向连接的,UDP是面向无连接的;2、TCP是可靠的,UDP是不可靠的;3、TCP是面向字节流的,UDP是面向报文的;4、TCP只有一对一的传输方式,UDP可以一对一、一对多和多对多。UDP不需要和TCP一样建立三次握手连接,而TCP在通信前则需要。 1、TCP是…

    2023年1月31日
    56600
  • 总部如何管理项目高管

    总部管理项目高管的方法主要包括制定明确的目标与指标、促进有效沟通、提供必要的培训与支持、实施定期评估、确保资源的合理分配。其中,制定明确的目标与指标是基础,它为项目高管的工作方向和业绩评估提供了明确的指引。通过设定具体、可衡量、可达到、相关性强、时限明确(SMART)的目标,高管能够更清晰地了解预期…

    2024年4月10日
    7300
  • 相关子查询与不相关子查询的区别是什么

    区别是:不相关子查询是指子查询与主查询之间没有任何关联关系,它们之间没有任何共享的列或条件。相关子查询是指子查询与主查询之间存在关联关系,它们之间有共享的列或条件。 不相关子查询 不相关子查询是指子查询与主查询之间没有任何关联关系,它们之间没有任何共享的列或条件。不相关子查询会先执行子查询语句,得到…

    2023年5月29日
    89400

发表回复

登录后才能评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部