在按钮上单击我想开始一个5分钟的计时器,然后执行一个方法来检查某些条件并在条件合适时启动警报。我已经看过有定时器和postDelay的例子,但是不太明白为什么一个人会使用一个与另一个。完成我想要做的事情的最佳方法是什么?我不想在5分钟内锁定用户界面。在倒计时期间,用户应该可以正常使用该应用程序。
编辑:我正在尝试postDelayed的建议但是Visual Studio并不喜欢我的代码。它看起来就像我发现的例子。我是一个单声道的机器人。Handler h = new Handler();
Runnable r = new Runnable(){
public void run()
{
Dialog d = inst2.showBuilder(this, "test", "test");
d.Show();
}
};
h.postDelayed(r, 5000);
具体而言,run中的代码块会抛出各种“} expected”和“命名空间不能直接包含诸如字段或方法之类的成员”异常。
答案 0 :(得分:4)
尝试使用计时器对象:
Timer mTimer = new Timer();
mTimer.schedule(new TimerTask()
{
@Override
public void run()
{
// Your code goes here
}
}, 1000); // 1sec
final Handler handler = new Handler();
Timer timer = new Timer();
timer.schedule(new TimerTask()
{
@Override
public void run()
{
handler.post(new Runnable()
{
public void run()
{
// YOUR Code
}
});
}
}, 1000); // 1sec
答案 1 :(得分:0)
你可以开始一个简单的Thread
,它将在后台睡5分钟,然后调用一个函数。当线程在后台休眠时,UI不会冻结。当线程完成执行您想要的操作时,您可以通过发送一些意图作为通知来启动警报,并在某些Broadcast Receivers
中接收它们。
希望这有帮助
答案 2 :(得分:0)
使用Handler.postDelayed(Runnable block);执行延迟的方法,因为android也不建议使用计时器。
答案 3 :(得分:0)
Handler h = new Handler();
Action myAction = () =>
{
// your code that you want to delay here
};
h.PostDelayed(myAction, 1000);