对于我的新Android应用程序,我需要一个函数,将我的应用程序超时3秒。我尝试了函数" sleep()"像这样:
seekBar1.setProgress(50); // Set something for my SeekBar
try{
Thread.sleep(3000); // Wait for 3 Seconds
} catch (Exception e){
System.out.println("Error: "+e); // Catch the exception
}
button.setEnabled(true); // Enable my button
它似乎工作,但如果我正在运行应用程序,它会这样做:等待3秒,设置进度和启用按钮。我想首先设置进度,然后等待3秒,然后才启用按钮。
是"睡觉()"对于我的使用权或我可以做什么,我的应用程序以正确的顺序执行它?
答案 0 :(得分:30)
您可以使用postDelayed()
这样的方法:
handler=new Handler();
Runnable r=new Runnable() {
public void run() {
//what ever you do here will be done after 3 seconds delay.
}
};
handler.postDelayed(r, 3000);
答案 1 :(得分:2)
你不应该在睡眠时阻止ui线程。可以在另一个线程上睡觉,但即使这样也应该避免。正确的方法是将Runnable发布给Handler。然后在Runnable的run()方法中放入你想要运行的任何代码。
答案 2 :(得分:1)
您可以在活动中定义Handle
并使用活动Handle.postDelayed()
中的onCreate()
,这样您就可以在3秒内收到有关该句柄的消息。收到后,您可以启用该按钮。
您可以使用AsyncTask
执行相同操作,doInBackground()
您只需睡3秒钟。然后在onPostExecute()
中启用按钮。
答案 3 :(得分:1)
使用Handler类的对象并使用方法handler.postDelayed(thread,time)。不要使用sleep()它会阻塞ui线程。