在我的应用程序中,我想显示随机数,我之间有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
答案 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线程有 访问它的视图,也将使用处理程序。