Android动画问题:主线程在运行一个动画,但开启子线程后动画就停止了

damianma 2016-03-18 11:14:35
遇到一个问题,还希望各位前辈帮忙指点

情况是这样的,我在主线程中运行一个动画

rocket.startAnimation(animation);


然后再开启另一个子线程去进行其他业务

new Handler().postDelayed(speedTest, 2000);


然后就发现子线程开始后,主线程的动画就停止了,这是为什么呢?

经过调试,发现子线程能正常运行完成业务,但就是主线程的动画不会动了。
如果我不开启子线程,主线程的动画就能一直正常运行。

有劳各位了,谢谢
...全文
673 4 打赏 收藏 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
damianma 2016-03-29
  • 打赏
  • 举报
回复
感谢楼上各位的回答,确实Handler不是一个新的线程,采用Thread后就没问题了。 然后还学到了一个新细节--“Only the original thread that created a view hierarchy can touch its view” view和控件不是线程安全的,所以在子线程中无法对view和控件进行修改和控制。 谢谢大家
xingzhong128 2016-03-20
  • 打赏
  • 举报
回复
Timer是一种定时器工具,用来在一个后台线程计划执行指定任务。它可以计划执行一个任务一次或反复多次。 TimerTask一个抽象类,它的子类代表一个可以被Timer计划的任务。 简单的一个例程: Java代码 收藏代码 import java.util.Timer; import java.util.TimerTask; /** *//** * Simple demo that uses java.util.Timer to schedule a task to execute * once 5 seconds have passed. */ public class Reminder ...{ Timer timer; public Reminder(int seconds) ...{ timer = new Timer(); timer.schedule(new RemindTask(), seconds*1000); } class RemindTask extends TimerTask ...{ public void run() ...{ System.out.println("Time''s up!"); timer.cancel(); //Terminate the timer thread } } public static void main(String args[]) ...{ System.out.println("About to schedule task."); new Reminder(5); System.out.println("Task scheduled."); } } 这才是开了新线程,handler.post这类方法其实是在主线程中执行的
摘星猿 2016-03-19
  • 打赏
  • 举报
回复
楼主使用了 handler 你以为你是在子线程 其实你是在主线程。
tcmakebest 2016-03-18
  • 打赏
  • 举报
回复
楼主以为的开子线程其实并不是子线程, new Thread 才是

80,490

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧