Android-多线程导致应用程序崩溃
嗨,每次我的游戏中有东西被破坏后,我都会在我的surface view线程中使用线程类创建一个爆炸动画的新对象。在短时间内摧毁多艘飞船后,应用程序退出活动。为什么会这样Android-多线程导致应用程序崩溃,android,multithreading,Android,Multithreading,嗨,每次我的游戏中有东西被破坏后,我都会在我的surface view线程中使用线程类创建一个爆炸动画的新对象。在短时间内摧毁多艘飞船后,应用程序退出活动。为什么会这样 explosion ex = new explosion(x,y); ex.start(); 及 类爆炸扩展线程实现可运行{ 私人长启动时间; 私有int num=0; 私人INTX; 私营企业; 公共爆炸(int mx,int my){ x=mx; y=我的; startTime=System.currentTimeMill
explosion ex = new explosion(x,y);
ex.start();
及
类爆炸扩展线程实现可运行{
私人长启动时间;
私有int num=0;
私人INTX;
私营企业;
公共爆炸(int mx,int my){
x=mx;
y=我的;
startTime=System.currentTimeMillis();
}
公开募捐{
while(num<3){
长毫秒=System.currentTimeMillis();
drawBitmap(爆炸.get(num),x,y,null);
如果(毫秒-起始时间>50){
startTime=System.currentTimeMillis();
num++;
Log.d(“爆炸”、“动画”);
}
}
Log.d(“爆炸”、“端螺纹”);
}
};
复制自developer.android
无论是否使用AsyncTask,请始终记住以下几点
关于单线程模型的两条规则:
-不要阻塞UI线程
-并确保仅在UI上访问AndroidUI工具包
线
我相信这条线会让你崩溃
canvas.drawBitmap(explosions.get(num),x,y,null);
此链接详细介绍了在另一个线程上更新UI的步骤:
闻起来像是设计问题。为什么要为动画运行线程?
恕我直言,我认为您应该在当前线程中运行它,并使用基于时间的动画。您几乎不需要更改代码,因为它已经是基于时间的。我相信在另一个线程上编辑UI是不必要的,如果您提供一些日志消息,这会有所帮助。我可以在不中断UI线程的情况下执行吗?我可以使用处理程序,但我不能将x和y传递给itI我假设渲染部分每1/x秒调用一次?然后只需创建对象,并在渲染部分调用爆炸对象的渲染部分。
canvas.drawBitmap(explosions.get(num),x,y,null);