Android异步、处理器还是计时器?
每隔5秒钟,我想调用我的Web服务并获取文本(而不是图像),然后在ImageAdapter中显示它。实现这一点的最佳方法是什么?这取决于您是否要使用其他线程。您是否希望用户能够在图像下载时在UI线程上与应用程序交互?如果是这样,那么我肯定会使用带有小(Android异步、处理器还是计时器?,android,timer,android-asynctask,handler,Android,Timer,Android Asynctask,Handler,每隔5秒钟,我想调用我的Web服务并获取文本(而不是图像),然后在ImageAdapter中显示它。实现这一点的最佳方法是什么?这取决于您是否要使用其他线程。您是否希望用户能够在图像下载时在UI线程上与应用程序交互?如果是这样,那么我肯定会使用带有小(style=“@android:style/Widget.ProgressBar.small”)的 如果你不关心线程,那么@inazaruk会怎么说 编辑:事实是,大多数从web服务检索数据的现代应用程序都会使用一个异步任务,在角落里有一个谨慎的小
style=“@android:style/Widget.ProgressBar.small”
)的
如果你不关心线程,那么@inazaruk会怎么说
编辑:事实是,大多数从web服务检索数据的现代应用程序都会使用一个异步任务,在角落里有一个谨慎的小加载器,只是为了让用户知道它正在更新
编辑2:下面是一个使用TimerTask每5秒运行一次的示例。关键是runOnUiThread()
可能有更好的方法将所有元素连接在一起,但这准确地描述了所有片段
myTimer = new Timer();
myTimer.schedule(new TimerTask() {
@Override
public void run() {
CallWebService();
}
}, 0, 1000);
}
private void CallWebService()
{
this.runOnUiThread(fetchData);
}
private Runnable fetchData = new Runnable() {
public void run() {
asyncTask.execute();
}
};
您应该在应用程序主线程内调用asynctask。无法在后台线程中调用Asynctask。我将添加此更新:我从Web服务获得的实际上是文本,而不是图像。您知道我是否可以使用java timer类每5秒运行一次Asynctask吗?@Raptrex:
timer
专门用于TimerTask
,虽然如果你想使用AsyncTask
,你自己实现计时器并不难。我会使用处理程序每5秒调用一次我的AsyncTask吗?谁是inazaruk?他说了什么?这绝对是正确的答案。唯一的问题是run方法可能应该通过再次调用postDelayed来重新调度自己。向上投票
final Handler handler = new Handler();
final Runnable r = new Runnable()
{
public void run()
{
callWebservice();
}
};
handler.postDelayed(r, 5000);