有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java我应该关心棒棒糖和其他版本中主线程和UI线程之间的区别吗?

在棒棒糖出现之前,生活很简单。您有一个main thread,有时也称为UI thread,其中完成了所有GUI工作(并且在任何情况下都避免了长时间运行的操作,以避免任何类型的故障),并且您有一个background threads在那里完成了这些长时间运行的工作

现在,在棒棒糖和Android的更高版本中,IIRC术语UI thread似乎将用户指向新的RenderThread,例如,一个用于设置涟漪动画的线程,当主线程处理输入事件或忙于在后台为您创建新内容时,需要在活动或任何其他类型的动画之间创建英雄元素

在AndroidStudio 1.3中,所有三种线程类型现在都有了自己的注释,表示特定的代码段应该在这个特定的线程上运行。对我来说,现在的问题是:作为应用程序开发人员,我是否应该在UIThread上运行任何,即RenderThread,并在我的应用程序中使用@UIThread


共 (2) 个答案

  1. # 1 楼答案

    我记得切特·哈斯(Chet Haase)在去年的谷歌IO上发表的RenderThread。他的发言是,首先,我们必须像以前一样继续MainThreadRenderThread仅用于动画。例如,如果我们有一种方法,比如onDrawFrame()以平滑60 fps的速度绘制动画,我们应该在RenderThread中调用它,因为MainThread可以被应用程序逻辑或其他东西减慢速度

    回到你的问题上来。我会说像以前一样使用MainThread。如果在动画方面遇到一些性能问题,请尝试将代码的绘图部分移动到RendererThread

  2. # 2 楼答案

    UIThread仍然是应用程序的主执行线程。而RenderThread只是一个支持处理线程,用于在主UI线程出现延迟时帮助应用程序。正如发展商所引述。安卓com:

    RenderThread是一个新的系统管理的处理线程,即使主UI线程中存在延迟,它也能保持动画的流畅。”

    对于您的问题,您是否愿意在UIThread上运行任何操作?答案是肯定的,你应该用RenderThread来代替吗?如果可能的话,是的