让活动等待特定时间段

时间:2012-04-26 06:49:53

标签: android android-activity

我的应用活动中有以下代码段。

如果用户第一次登陆活动,那么唯一会发生的事情就是将布尔变量shouldSleep更改为true

此后,else部分将执行,每60秒生成一次notification

但主要的问题是,如果我执行此代码,活动 NEVER 会显示,因为它会在其他部分继续循环,因此会继续睡觉。

我想要的是剩下的应用程序应该每60秒运行一次,这个方法的else部分应该被执行。
我想这与AsyncTask有关但是我对此并不太了解。

知道怎么做吗?在此先感谢您的帮助。

boolean shouldSleep=false;
private void ShowNotification() 
{
    //DO SOME TASK

    if (shouldSleep) 
    {
        Thread.sleep(60000);
        //DO SOME TASK
    } 

    else
   {
        shouldSleep = true;
   }

        /** Calling the method recursively so that it always runs. */
        ShowNotification();
}

2 个答案:

答案 0 :(得分:1)

也许你可以使用Timer对象:

new Timer().schedule(new TimerTask() {
    @Override
    public void run() {
        //This code is run all 60seconds
        myBooleanVar = true;
        //If you want to operate UI modifications, you must run ui stuff on UiThread.
        Activity.this.runOnUiThread(new Runnable() {
            @Override
            public void run() {
                Activity.this.changeUiStuff();
            }
        });
    }
}, 60000);

答案 1 :(得分:0)

只需使用Timer即可。您可以每隔60秒运行一次任务,而不是线程方法:

new Timer().schedule(task, delay, period);

期间= 60 * 1000