如题。
我是在menu按钮中添加的事件
代码如下
[Toast.makeText(MenuActivityActivity.this, "开始下载程序",
Toast.LENGTH_SHORT).show();
System.out.println("caseTouch");
System.out.println("1");
System.out.println("2");
System.out.println("3");
System.out.println("4");
try {
Thread.sleep(2000);
System.out.println("try...........");
} catch (InterruptedException e) {
System.out.println("SLEEP EXCEPTION");
e.printStackTrace();
System.out.println("catch");
}
各种System.out都打印出来了,toast也没出来,而且点击menu按钮调出的item后。感觉程序像是卡了一样,卡的事件就是sleep时间,请问怎么回事……在线等~谢谢各位咯~
我是在menu按钮中添加的事件
代码如下
[Toast.makeText(MenuActivityActivity.this, "开始下载程序",
Toast.LENGTH_SHORT).show();
System.out.println("caseTouch");
System.out.println("1");
System.out.println("2");
System.out.println("3");
System.out.println("4");
try {
Thread.sleep(2000);
System.out.println("try...........");
} catch (InterruptedException e) {
System.out.println("SLEEP EXCEPTION");
e.printStackTrace();
System.out.println("catch");
}
各种System.out都打印出来了,toast也没出来,而且点击menu按钮调出的item后。感觉程序像是卡了一样,卡的事件就是sleep时间,请问怎么回事……在线等~谢谢各位咯~
当前线程被挂起2S,意味着它是暂时放弃了cpu 2S,放弃了cpu,那么你的show()动作自然也被取消了
如果你是先挂起线程,再show()的话,效果就不一样了,你可以试一试
我明白的你的意思了
我想请问另外一个话题,10是10秒的意思吗?还是什么单位……Android不通常都是毫秒为单位吗?
另外,length和short各分别代表多少秒的显示时间呢?
tks~
请问这睡……toast是不是已经显示了一点点,但是只不过肉眼看不出来呢?
那就是2秒后在show了吧……我貌似是忽略了些什么。那有没有什么方法能祈祷代码暂停的作用……我想让toast正常显示,你有什么好的方法吗?因为代码走的太快了……你懂得……
new Timer().schedule(new TimerTask() {
@Override
public void run() {
//这里是2S后执行的代码
}
}, 2 * 1000);
那请问他的2秒是在什么时候开始计算的呢?
toast展示出以后?还是消失以后?还是说同时进行,只是2秒的sleep不影响toast.show……
谢谢!
Toast....show();
new Timer().schedule(new TimerTask() {
@Override
public void run() {
//这里是2S后执行的代码
}
}, 2 * 1000);
//如果这里有代码,程序还是会继续执行的
它是从toast show出来后开始计算的。
总的来说,代码还是像以前一样,从上而下执行,执行完toast show之后,遇到时间任务(此时开始计时),但并不是立即执行run{}里面的代码,而是继续执行时间任务后面的代码。等到2S之后,程序会执行Run{}里面的代码,注意的是它并不会影响原来主程序的执行,因为run{}部分被放在了新开的一个线程之内