在显示祝酒时延迟命令

时间:2015-02-17 15:25:16

标签: android

在我的应用程序中,我想显示随机数,我之间有3秒的延迟。虽然命令被延迟了,但我想表示祝酒。

public void random(View v)
{
    Toast myToast = Toast.makeText(this, "Wait...", Toast.LENGTH_LONG);
    myToast.show();

try{
    Thread.sleep(3000);
}
catch (InterruptedException e)
{
    e.printStackTrace();
}

int number= random.nextInt(6) + 1;

// ...

我尝试了这段代码,但它首先延迟,然后显示Toast。我希望在数字之间显示Toast。 有人可以帮帮我吗?

谢谢,Marco

2 个答案:

答案 0 :(得分:1)

试试这个:

这将每隔3秒获得一个随机数并显示Toast。

Handler handler=new Handler();
handler.postDelayed(new Runnable(){
        public void run() {
          int number= random.nextInt(6) + 1;
          .......
         Toast myToast = Toast.makeText(getApplicationContext(), "Wait...", Toast.LENGTH_SHORT);
         myToast.show();          
      }}, 3000);

答案 1 :(得分:0)

您不需要将UI线程设置为休眠状态。 为此目的,有Timer和TimerTask的概念。

    private void testTimer(){
    TimerTask task = new TimerTask() {
        @Override
        public void run() {
            //random number generation;
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    Toast.makeText(YourActivityOrContext.this, "Wait...", Toast.LENGTH_LONG).show();
                }
            });
        }
    };
    Timer t = new Timer();
    t.schedule(task, 3000);
}

不是"更好"比Ranjith的解决方案,只是另一个。 实际上Timer和TimerTask是Java,而Handler是Android。 但是runOnUiThread,你需要使用它,因为只有UI线程有 访问它的视图,也将使用处理程序。