AnimationDrawable.start()是否在新线程中运行?

时间:2012-11-06 08:28:23

标签: java android multithreading runnable

我阅读了文档http://developer.android.com/reference/android/graphics/drawable/AnimationDrawable.html

它扩展了DrawableContainer,它看起来像一种UI,它实现了Runnable,所以它应该在一个新线程中运行(它应该是正确的?因为它实现了Runnable)。那么在这种情况下,我们是否应该遵循规则“只更新UI线程中的UI组件”?

我测试了一个在AnimationDrawable.start()之后执行重循环的程序,程序崩溃(有着名的停止响应错误)。现在我完全糊涂了,AnimationDrawable.start()是否在新线程中运行?

编辑:

AnimationDrawable.start();

for (int i = 0 ; i< 10000000 ; i ++){
    System.out.println(i);
}

2 个答案:

答案 0 :(得分:0)

如果查看源代码:http://developer.android.com/reference/android/graphics/drawable/AnimationDrawable.html

此课程中没有新的Thread。实际上,每次在屏幕上绘制时,此组件都会创建一个新的动画帧。没什么。

我不知道你的意思是“在AnimationDrawable.start()之后执行重循环的程序”,但我很清楚,AnimationDrawable执行的任何操作都必须快速,基本上只是一个必须在此处执行图像交换。

答案 1 :(得分:0)

现在我知道为什么它实现了Runnable:

new Thread(){
   public void run(){
     AnimationDrawable.start();
   }
}.start();

for (int i = 0 ; i< 10000000 ; i ++){
   System.out.println(i);
}

我想在将start()发送到新线程之后,它将在新线程中运行并且不会导致任何“无响应错误”,但事实上它仍然崩溃。现在我知道它实现了Runnable,因为Android将它发送回UI线程来执行。