Я запрашиваю информацию из веб-службы в моем приложении для Android. Веб-служба возвращает список элементов, каждый элемент имеет изображение base64 и некоторую информацию
Первый способ: просто зайдите на веб-сервис и получите результат. Это означает замораживание пользовательского интерфейса до загрузки данных. Не хорошее решение
Второй способ: поместить загружаемые данные в поток и отобразить индикатор выполнения с сообщением.
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 ().
Третий метод: я хотел бы иметь что-то вроде: пользователь нажимает кнопку, чтобы получить данные, поток загружает элемент за элементом из веб-службы и немедленно показывает его в списке. Использование всегда может отменить запрос нажатием кнопки.
Но как это сделать? Или есть другой способ?