我在这段代码中我循环访问对象的attaylist并为每个对象分配回调,但是当我使用CountDownTimer时,它崩溃了无法在未调用的线程内创建处理程序Looper.prepare()
for ( final ABoxActor a : actList )
{
ActorDamageListener adl = new ActorDamageListener(){
public void ActorDestroyCallback() {
Log.e("KILLED", a.getBitmapName() );
}
public void ActorDamageCallback(float damage) {
Log.e("DAMAGED "+String.valueOf(damage), a.getBitmapName() );
a.setSpriteCurrentFrame(10);
//// THROWS Can't create handler inside thread that has not called Looper.prepare()
CountDownTimer t = new CountDownTimer(500,500){
@Override
public void onFinish() {
a.setSpriteCurrentFrame(15);
}
@Override
public void onTick(long millisUntilFinished) {
}}.start();
/////////////////////////////////
}
};
a.setListener(adl);
}
任何想法最简单的方法是什么?我可以以某种方式将这个“looper”添加到我的回调定义中吗?
谢谢!
答案 0 :(得分:3)
您可能正在自己的线程中调用此代码。每个thead都需要附加一个Looper才能让处理程序回调到ui线程。因此,您必须调用Looper.prepare()来设置looper,以便处理程序可以回调您的ui线程。