2

アクティビティが開いている間にタスクを繰り返したい。

たとえば、アクティビティが開いている間、毎分 foo() を繰り返します。

タイマー、ハンドラー、ランナブルについて考えました。

私はこのコードについて考えました:

多分もっと良い方法がありますか?

public void setRefreshRate()
        {
          newTimer = true
            while(true)
            {
                if(newTimer)
                    new Handler().postDelayed(new Runnable() {
                    @Override
                    public void run() {

                        if(isNetworkAvailable() && movedToAnotherActivity== false)
                            new GetWorkouts().execute();

                        newTimer = true;
                    }
            }, Integer.getInteger(data.getWallRefresh()));

                    newTimer = false;

            }
        }
4

2 に答える 2

0

より良い方法があるかもしれませんが、AsyncTask私はおそらくそれを使用して呼び出しsleep()、タスクオブジェクトを呼び出して終了時に設定することdoInBackground()が好きです。cancel()nullActivity

 public void doInBackground(Void...params)
{
    boolean flag = false;
    while (!flag)
    {
       // do some work
       Thread.sleep(6000);
    }
}

次にオーバーライドし、 と で true に設定しflagます。その後、必要に応じて他の方法を使用して を更新できます。onBackPressed()finish()AsyncTaskUI

非同期タスク

于 2013-08-14T23:16:14.493 に答える