安排AsyncTask
让它每分钟运行一次的最佳做法是什么(请注意,在AsyncTask完成后我应该能够更新UI)。
我不打算使用Service
,因为这些任务只应在应用处于有效状态时运行。
编辑:AsyncTask只是从网络服务器下载JSON数据(我需要更新UI)。 JSON数据非常小,几千字节。
答案 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();
}
}
}