首先说一下需求在Activity中弹出一个dialog,dialog中有一个动画
却遇到一下错误
· 解决方法:
是因为在一个线程内发消息用同一个Message对象导致的。
原来错误的写法:
singleThreadExecutor.execute(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(3000);
Message msg_1 = new Message();
msg_1.what = KEY_1;
mHandler.sendMessage(msg_1);
Thread.sleep(1600);
msg_1.what = KEY_2;
mHandler.sendMessage(msg_1);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
修改后正确的写法:
singleThreadExecutor.execute(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(3000);
Message msg_1 = new Message();
msg_1.what = KEY_1;
mHandler.sendMessage(msg_1);
Thread.sleep(1600);
Message msg_2 = new Message();
msg_2.what = KEY_2;
mHandler.sendMessage(msg_2);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});总结:在线程内发送消息不要用同一个Message对象,解决办法很简单new Message();皆可以解决
本文介绍了一个在Android应用中实现对话框动画时遇到的问题及解决方案。错误源于使用同一个Message对象在不同时间点发送消息来更新UI。文章提供了修正后的代码示例,展示了如何通过创建不同的Message对象来避免这一问题。
1100





