Android 为什么主线程是UI线程?
Android选择将主线程作为UI线程有什么原因吗 在单个非线程或线程池上进行所有计算,然后仅在需要绘制某些内容时,才将其传递给UI处理程序,这不是更容易吗 有人可能会说,您仍然可以将所有工作卸载到后台线程,然后发布到UI——但更多的是关于心态。如果默认情况下它是脱离UI线程的,那么开发人员会更加小心地在UI线程上发布什么以及不发布什么Android 为什么主线程是UI线程?,android,multithreading,Android,Multithreading,Android选择将主线程作为UI线程有什么原因吗 在单个非线程或线程池上进行所有计算,然后仅在需要绘制某些内容时,才将其传递给UI处理程序,这不是更容易吗 有人可能会说,您仍然可以将所有工作卸载到后台线程,然后发布到UI——但更多的是关于心态。如果默认情况下它是脱离UI线程的,那么开发人员会更加小心地在UI线程上发布什么以及不发布什么 我不是在这里争论这是否是一个有效的选择-我更感兴趣的是为什么主线程默认为UI线程?可能是为了让更多的人开发应用程序。如果你刚开始编程,你需要做的第一件事就是创建
我不是在这里争论这是否是一个有效的选择-我更感兴趣的是为什么主线程默认为UI线程?可能是为了让更多的人开发应用程序。如果你刚开始编程,你需要做的第一件事就是创建一个新的UI类,我想你已经害怕这个困难了。可能是为了让更多的人开发应用程序。如果你刚开始编程,你需要做的第一件事就是创建一个新的UI类,我想你已经害怕这个困难了。这是一个同步的问题,用户的动作和图形界面中显示的结果必须遵循严格的顺序,显然,在一个UI线程中更容易做到这一点。这是一个同步问题,用户的操作和图形界面中显示的结果必须遵循严格的顺序,显然,在一个UI线程中更容易做到这一点 为什么主线程默认为UI线程 现在,当我写这篇文章时,是2017年12月 关于线程模型,Android的架构是在2005-2007年的某个时间段创建的。瞧,它是十多年前创建的 当时:
- 用于移动设备的应用程序非常简单
- 移动设备CPU是单核的,其运行速度仅为当今核心速度的一小部分(例如,33MHz、66MHz、133MHz)
- Dalvik是纯解释的(没有JIT,没有AOT)
- 用于移动设备的应用程序非常简单
- 移动设备CPU是单核的,其运行速度仅为当今核心速度的一小部分(例如,33MHz、66MHz、133MHz)
- Dalvik是纯解释的(没有JIT,没有AOT)
在2005年,当CPU速度与今天相当时,mirror universe Android团队可能做出了不同的决定,可能包括为UI工作提供更灵活的线程。另外,队里所有的男人都会留山羊胡子。编程容易。如果默认情况下所有工作都在一个线程上完成,则不必担心同步、锁定或其他任何问题。考虑到没有接受过正式CS培训的Android开发者的数量,这可能是一个明智的选择
实际上,从v21开始,有一个单独的渲染线程。在onDraw中传递给视图的画布不再绘制,它累积绘制命令,然后将该绘制命令列表放入队列。渲染线程每16毫秒(每秒60次)唤醒一次,并实际绘制命令列表。编程容易。如果默认情况下所有工作都在一个线程上完成,则不必担心同步、锁定或其他任何问题。考虑到没有接受过正式CS培训的Android开发者的数量,这可能是一个明智的选择
实际上,从v21开始,有一个单独的渲染线程。在onDraw中传递给视图的画布不再绘制,它累积绘制命令,然后将该绘制命令列表放入队列。渲染线程每16毫秒(每秒60次)唤醒一次,并实际绘制该命令列表。我认为它是以这种方式实现的,因为:
我想说,它是以这种方式实施的,因为: