Android:对于画布动画,最好有1个大线程,或者一些小线程

时间:2012-07-04 19:28:42

标签: android multithreading memory-management drawing android-canvas

我制作的应用程序会激发不同的小动画,如下降的旋转星或类似于从下到上浮动的文本,在surfaceview上使用画布进行动画

一旦被解雇,它们都是不变的, 所以我计划了2种方法,1是一个大线程  处理它们所有的动画,每个动画1之后更新1

或者对于每种类型的动画,例如流星,都有它自己的线程设置,并且在每个给定点,主要活动可以在其中一个线程上创建命令,创建他,然后启动,然后忘记他,让他在后台运行,在动画结束时,该线程将自行结束。

所以我不必担心存储每个被激活的线程等等,因为我不知道有多少可以在给定时间开始。

因此,解雇随机小的短线程还是有一个大线程来处理它们会更有效吗?会更顺畅,更好吗?

动画仅仅是为了视觉上的结界而不做其他任何事情,它也不会与其它动画完全相互作用,它只是开始,循环,结束。

我希望你明白:\

2 个答案:

答案 0 :(得分:2)

你可能想要一个SurfaceView,其中一个线程处理你的所有绘图。每个动画有一个线程似乎过于复杂。每个动画类型当然可以有一个方法,例如只要您的一个动画线程呈现,就会调用renderStars()renderText()等。

推荐阅读:

答案 1 :(得分:0)

在动画期间,您必须更新UI Thread上的用户界面,不能使用其他线程来运行动画。但是,对于密集动画,您必须使用Gaming Engine或编写自己的Game Thread,这将首先根据动画公式更新对象的数据,然后在UI thread上绘制它们。