Резьбовой вызов веб-сервиса

Я запрашиваю информацию из веб-службы в моем приложении для 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 ().

Третий метод: я хотел бы иметь что-то вроде: пользователь нажимает кнопку для получения данных, поток загружает элемент за элементом из веб-службы и сразу же показывает его в списке. Использование всегда может отменить запрос нажатием кнопки.

Но как это сделать? Или есть другой способ?

Ответы на вопрос(1)

Ваш ответ на вопрос