我正在编写一个Android应用程序,需要定期(每30秒)从服务器获取数据。我当时正在考虑使用AlarmManager安排这些任务,但是我需要能够传递一个用于更新视图的回调函数。由于Intent无法封装回调,因此我决定找到另一个解决方案,即“工作线程”。这里的问题是,对服务器的请求是在AsyncTask中执行的,其中onPreExecuteonPostExecute必须从Ui线程运行,所以我也真的不能这样做。

我将不胜感激任何建议,在这种情况下最好的方法。

最佳答案

使用Handler

 Handler mHandler;
  public void useHandler() {
    mHandler = new Handler();
    mHandler.postDelayed(mRunnable, 30000);
  }

  private Runnable mRunnable = new Runnable() {

    @Override
    public void run() {
      Log.e("Handlers", "Call asynctask");
      /** Call your AsyncTask here **/
      mHandler.postDelayed(mRunnable, 30000);
    }
  };

07-28 04:26