安排AsyncTask每分钟运行一次

时间:2014-02-26 11:32:15

标签: android android-asynctask scheduled-tasks

安排AsyncTask让它每分钟运行一次的最佳做法是什么(请注意,在AsyncTask完成后我应该能够更新UI)。

我不打算使用Service,因为这些任务只应在应用处于有效状态时运行。

编辑:AsyncTask只是从网络服务器下载JSON数据(我需要更新UI)。 JSON数据非常小,几千字节。

2 个答案:

答案 0 :(得分:0)

您必须使用Timer

timer.schedule(asyncTask, 0, 50000); //execute in every 50000 ms

您可以使用onPostExecute()类的AsyncTask覆盖方法更新用户界面。

http://developer.android.com/reference/java/util/Timer.html http://developer.android.com/reference/android/os/AsyncTask.html

答案 1 :(得分:0)

我使用Timer对象。

有一个完整的例子:

public class TimerActivity extends Activity {
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    MyTimerTask myTask = new MyTimerTask();
    Timer myTimer = new Timer();

    myTimer.schedule(myTask, 3000, 1500);
  }

  // In this class you'd define an instance of your `AsyncTask` 
  class MyTimerTask extends TimerTask {
    MyAsyncTask atask;

    final class MyAsyncTask extends AsyncTask<Param1, Param2, Param3> {
      // Define here your onPreExecute(), doInBackground(), onPostExecute() methods
      // and whetever you need
      ...
    }

    public void run() {
      atask = new MyAsyncTask<Param1, Param2, Param3>();
      atask.execute();
    }
  } 
}