可能重复:
如何在延迟后调用方法
当用户单击一个按钮时,我想要 doThis(myVar1);。1 秒后我想这样做(myVar2);。如何安排第二次通话?
创建一个处理程序并postDelayed()
在一个可运行对象上执行。检查Handler 的文档。
Handler handler = new Handler();
final Runnable r = new Runnable()
{
public void run()
{
doThis(myVar2);.
}
};
...
...
handler.postDelayed(r, 1000);
使用线程尝试这种方式:
btnbtnstart.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(mthreadRunning==false)
{
doThis(myVar1);
mthreadRunning=true;
dojobThread();
}
}
});
public void dojobThread(){
Thread th=new Thread(){
@Override
public void run(){
try
{
while(mthreadRunning)
{
Thread.sleep(100L);
mthreadRunning=false;
doThis(myVar2);//call doThis(myVar2); here after 1 second delay
}
}catch (InterruptedException e) {
// TODO: handle exception
}
}
};
th.start();
}
在桌面 GUI 应用程序中,我会使用javax.swing.Timer
Swing API。也许Android API有类似的东西?当然,上面 imran khan 的 Thread 示例本质上是相同的。