如何在Android中延迟X时间执行代码

时间:2012-01-27 13:09:22

标签: android xamarin.android

在按钮上单击我想开始一个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”和“命名空间不能直接包含诸如字段或方法之类的成员”异常。

4 个答案:

答案 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);