Chamada de serviço da Web encadeada
Estou solicitando informações de um serviço da web no meu aplicativo para Android. O serviço da web retorna uma lista de itens, cada item tendo uma imagem base64 e algumas informações
Primeiro método: basta acessar o serviço web e obter o resultado. Isso significa congelamento da interface do usuário até que os dados sejam baixados. Não é uma boa solução
Segundo método: coloque o download dos dados em um encadeamento e exiba uma barra de progresso com uma mensagem.
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();
}
};
Isso mostra uma boa imagem de carregamento e a mensagem. O usuário terá que esperar até que todo o download esteja concluído. Não sei como cancelar o segmento getdata ().
Terceiro método: eu gostaria de ter algo como, o usuário pressiona um botão para obter dados, um thread faz o download de itens por item do serviço da Web e mostra imediatamente na lista. O uso sempre pode cancelar a solicitação pressionando o botão.
Mas como fazer isso ? Ou existe outra maneira ?