每隔5秒钟,我希望调用我的webservice并获取文本(而不是图像),然后在我的ImageAdapter中显示它。实现这个最好的方法是什么?
final Handler handler = new Handler();
final Runnable r = new Runnable()
{
public void run()
{
callWebservice();
}
};
handler.postDelayed(r, 5000);
这取决于你是否想使用不同的线程。你希望用户在UI线程上与应用程序进行交互,同时图片正在下载吗?如果是这样,我肯定会使用AsyncTask和一个小ProgressBar (style="@android:style/Widget.ProgressBar.Small"
)。
如果您不关心线程,则可以按照@inazaruk所说。
编辑:事实上,大多数从Web服务检索数据的现代应用程序都会使用一个离散的小加载器通知用户它正在更新。
编辑2:这里有一个例子,每5秒运行一次TimerTask。关键是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();
}
};
Timer
是专门为 TimerTask
设计的,尽管如果你想使用 AsyncTask
,自己实现一个定时器也不是很难。 - Wroclai你应该在应用程序的主线程中调用asynctask。asynctask不能在后台线程中调用。