【问题标题】:How to delay seconds in android?如何在android中延迟秒?
【发布时间】:2015-12-09 03:12:54
【问题描述】:

我想延迟几秒显示Toast,我试试SystemClock.sleep

但它只显示最后一条消息("10s")...

Toast.makeText(MainActivity.this,"1s", Toast.LENGTH_SHORT).show();
SystemClock.sleep(5000);
Toast.makeText(MainActivity.this,"5s", Toast.LENGTH_SHORT).show();
SystemClock.sleep(5000);
Toast.makeText(MainActivity.this,"10s", Toast.LENGTH_SHORT).show();

那应该是按1s、5s、10s的顺序显示吧?

我也参考了这个做法,但是不能实现... How to set delay in android?

那么问题出在哪里?

【问题讨论】:

  • 你试过Thread.sleep(5000) 吗?
  • 第二个参数不定义时间间隔。但是是定义使用 Toast 显示的消息。
  • 使用handlerpostDelayed 比使用Thread.sleep 更好。
  • 是的,我试过这种方式,但结果是一样的。
  • 在冻结 UI 线程时显示的内容无关紧要。绝对,完全,根本不是你想做的……永远。最有可能的是,用户将收到“应用无响应”消息。无论如何,它只似乎显示标题的原因是因为你设置了第一个然后停止应用程序......所以在那些愚蠢的延迟结束之前它无法更新屏幕。跨度>

标签: android delay system-clock


【解决方案1】:

尝试处理程序

public void showToast(final String message, int timeInMilliSeconds, final Context context) {
    Runnable runnable = new Runnable() {
        @Override
        public void run() {
            Toast.makeText(context, message, Toast.LENGTH_SHORT).show();
        }
    };
    Handler handler = new Handler();
    handler.postDelayed(runnable, timeInMilliSeconds);
}

用法:

showToast("1s, 1000, this);
showToast("5s, 5000, this);
showToast("10s, 10000, this);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-09
    • 1970-01-01
    • 2017-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-27
    • 2011-05-30
    相关资源
    最近更新 更多