我正在编写一个Android应用程序,需要定期(每30秒)从服务器获取数据。我当时正在考虑使用AlarmManager
安排这些任务,但是我需要能够传递一个用于更新视图的回调函数。由于Intent
无法封装回调,因此我决定找到另一个解决方案,即“工作线程”。这里的问题是,对服务器的请求是在AsyncTask
中执行的,其中onPreExecute
和onPostExecute
必须从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);
}
};