0

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

完全显示了第一个吐司“try block start”。

知道我在哪里弄错了吗?

4

3 回答 3

4

发生这种情况是因为您睡了 5 秒钟。您的 UI 线程挂起,无法绘制 Toast。当睡眠时间过去时,您的敬酒时间也将过去。试试Thread.sleep(500);吧。

最后,不要在 UI 线程上使用 Thread.sleep()。

于 2013-10-28T14:56:58.150 回答
1

尝试删除Thread.sleep(5000);线。通过在主线程(即 UI 线程)上使用 sleep,您实际上会停止绘制 UI 5 秒(这超过了 Toast 显示的时间)。

您应该避免在 UI 线程上使用睡眠(因为它会导致您的 UI 挂起)。

于 2013-10-28T14:56:06.947 回答
0
Toast.makeText(getApplicationContext(), "try block start", Toast.LENGTH_LONG).show();

它将在 UI 线程上运行。如果您在使用 Android 4.0 的后台程序中,则 show() 将引发异常。

于 2013-10-28T14:57:17.487 回答