显示吐司时延迟命令



在我的应用程序中,我想显示随机数,它们之间有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

试试这个:

这将每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);

您不需要设置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);
}

这并不比兰吉思的解决方案"更好",只是另一个。实际上Timer和TimerTask是Java,而Handler是Android。但是运行OnUiThread,您需要使用它,因为只有UI线程具有访问它的视图,也将使用Handler。

最新更新