0

アプリケーション アクティビティに次のコード スニペットがあります。

ユーザーが初めてアクティビティに着地する場合、発生するのはブール変数shouldSleepを に変更することだけですtrue

その後、60 秒ごとにの生成elseを含む部分が実行されます。notification

しかし、主な問題は、このコードを実行すると、他の部分でループし続け、スリープ状態になるため、アクティビティが表示されないことです

私が望むのは、残りのアプリケーションが正常に実行され、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 に答える