这个问题与Android中关于主线程和UI线程的讨论不同。
通过系统线程--处理系统UI的线程,如状态条、通知和其他正在进行的系统进程,例如处理主按钮按下、最近菜单等的线程.
通过主线程-App的线程来处理UI (进程启动时分叉)
我相信这是一个特殊的线程,因为繁忙的应用程序主线程不会挂起你的设备,除了应用程序之外,其他东西都能正常工作。
我的怀疑仅仅是出于的目的:如果系统能够为它管理一个单独的线程(以完成UI工作),而不是任何进程/应用程序的主线程;那么为什么应用程序不能有能够处理UI的多个线程(无论它对于devs来说多么复杂!)
请提供参考,同时指出这方面的答案。
发布于 2022-02-07 13:15:01
通过系统线程-处理系统UI的线程,如statusbar,通知和其他正在进行的系统进程,如线程,处理家庭按钮-按下,最近-菜单等。
其中很可能涉及到几个线程。
我相信这是一个特殊的线程,因为繁忙的应用程序主线程不会挂起你的设备,除了应用程序之外,其他东西都能正常工作。
更重要的是,系统UI由独立的OS进程处理,独立于应用程序的OS进程。和大多数现代操作系统一样,在Android中,线程由进程拥有。因此,根据定义,单独的进程有不同的线程。
那么,为什么应用程序不能拥有能够处理UI的多个线程(不管它对于devs来说有多复杂!!)
这是一个架构上的决定,大约15年前,当时手机硬件比现在有限得多。在受约束的环境中,使用单个“魔术线程”是一种常见的做法,因为它避免了不断检查锁和其他方法的开销,以确保数据结构的线程安全。虽然谷歌已经做了一些努力来改进这一点(例如,添加了一个单独的呈现线程),但核心架构限制仍然存在,这是为了向后兼容较旧的应用程序。
还要注意的是,Jetpack的撰写工作相当多,以尝试允许多线程可组合性。基本上,由于我们现在有了更好的硬件,Google正在为我们处理低级别的同步,所以可以在几个线程上运行,而不存在任何问题。
https://stackoverflow.com/questions/71019062
复制相似问题