0

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

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

此后,else将执行包含每 60 秒生成的notification部分。

但主要问题是,如果我执行此代码,则活动永远不会显示,因为它一直在 else 部分循环,因此继续休眠。

我想要的是剩余的应用程序应该每 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();
}
4

2 回答 2

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);
于 2012-04-26T06:58:29.360 回答
0

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

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

期间 = 60*1000

于 2012-04-26T06:58:49.457 回答