我使用AsyncTask
从服务器获取数据。我需要定期更新数据。
最好的办法是什么?
答案 0 :(得分:5)
您可以使用Timer类来使用TimerTask而不是AsyncTask
来安排定期任务见:
http://developer.android.com/reference/java/util/Timer.html
http://developer.android.com/reference/java/util/TimerTask.html
要更新您的UI,您应该遵循这个好的教程:
http://android-developers.blogspot.com/2007/11/stitch-in-time.html
答案 1 :(得分:4)
使用AlarmManager设置闹钟并在AsyncTask
课程中致电AlarmReceiver
。
答案 2 :(得分:0)
您可以根据自己的要求在onProgressUpdate()
或onPostExecute()
上进行此操作。
onProgressUpdate(Progress...)
,在调用publishProgress(Progress ...)后在UI线程上调用。执行的时间是不确定的。此方法用于在后台计算仍在执行时显示用户界面中的任何形式的进度。例如,它可用于为进度条设置动画或在文本字段中显示日志。
onPostExecute(Result)
,在后台计算完成后在UI线程上调用。后台计算的结果作为参数传递给此步骤。
http://developer.android.com/intl/de/reference/android/os/AsyncTask.html
答案 3 :(得分:0)
只是陈述其中一种可能性。您也可以使用ScheduledThreadPoolExecutor课程。它通常比TimerTask更有可能。
答案 4 :(得分:0)
要详细说明macarse的回复,你的确可以“set an alarm with AlarmManager and call your AsyncTask in your AlarmReceiver class。”
我在链接帖子中提出的问题仍然存在:我不知道是否存在与从WakefulBroadcastReceiver实例化AsyncTask相关的生命周期问题,即我不知道上述解决方案是否可以导致MyAsyncTask过早被杀死。