在测试Android应用程序的代码时,我注意到try块中的第一个语句没有被执行 这是我的代码。
try {
Toast.makeText(getApplicationContext(), "try block start", Toast.LENGTH_LONG).show();
Thread.sleep(5000);
Toast.makeText(getApplicationContext(), "TRY after sleep", Toast.LENGTH_LONG).show();
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage("123", null, "ddd", null, null);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
Toast.makeText(getApplicationContext(), "EXCEPTION CATCH", Toast.LENGTH_LONG).show();
}
首先显示第一次吐司“尝试阻止开始”。
知道我在哪里错了吗?
答案 0 :(得分:4)
这种情况正在发生,因为你正在睡觉5秒钟。
您的UI线程挂起,无法绘制Toast。
当睡眠时间过去时,你的祝酒时间也会过去。请改为Thread.sleep(500);
。
最后,不要在UI线程上使用Thread.sleep()。
答案 1 :(得分:1)
尝试删除Thread.sleep(5000);
行。通过在主线程(即UI线程)上使用sleep,您实际上停止绘制UI 5秒(超过Toast节目的时间)。
你应该避免在UI线程上使用sleep(因为它会导致你的UI挂起)。
答案 2 :(得分:0)
Toast.makeText(getApplicationContext(), "try block start", Toast.LENGTH_LONG).show();
它将在UI线程上运行。如果您处于Android 4.0的背景中,那么show()会抛出异常。