try块中的第一个语句未执行

时间:2013-10-28 14:54:49

标签: android

在测试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();           
    }  

首先显示第一次吐司“尝试阻止开始”。

知道我在哪里错了吗?

3 个答案:

答案 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()会抛出异常。