【发布时间】:2010-09-26 10:53:07
【问题描述】:
我正在从我的 Android 应用程序中的网络服务请求信息。 Web 服务返回一个项目列表,每个项目都有一个 base64 图像和一些信息
第一种方法:只需访问网络服务并获取结果。这意味着在下载数据之前冻结 UI。不是一个好的解决方案
第二种方法:将数据下载放到一个线程中,并显示一个带有消息的进度条。
private void StartGettingData()
{
viewInfo = new Runnable(){
public void run() {
getData(); //from the web service
}
};
Thread thread = new Thread(null, viewInfo, "MagentoBackground");
thread.start();
progressDialog = ProgressDialog.show(TracksListActivity.this,
"Please wait...", "Retrieving data from WEB...", true);
}
private void getData(){
{
get data from web service into a list and then
runOnUiThread(returnRes);
}
private Runnable returnRes = new Runnable() {
public void run() {
populate the listview adapter with info from the web service result list and
progressDialog.dismiss();
generalTrackInfoAdapter.notifyDataSetChanged();
}
};
这显示了一个很好的加载图像和消息。用户必须等到所有下载完成。我不知道如何取消 getdata() 线程。
第三种方法:我想要类似的东西,用户按下按钮获取数据,线程从 Web 服务逐项下载并立即将其显示在列表中。用户总是可以通过按下按钮来取消请求。
但是,如何做到这一点?还是有别的办法?
【问题讨论】:
标签: android web-services asynchronous