O que são esses itens entre < > depois de AsyncTask , onde usamos?
1 resposta
S
sandrofabres
Gente , já olhei um pouco de generics e listas mas em nenhum dos casos eu aprendi exatamente saber o que é isso e por que toda hora eu vejo desenvolvedores usando com “parâmetros” diferentes como vemos abaixo, isso me deixa confuso.
Basicamente, o AsyncTask é feito para rodar tarefas em background para não onerar a performance da thread principal ou UI (user interface) ou mesmo travá-la. Exemplos de processamentos em background: baixar dados da internet, decodificar imagens, etc.
Quanto aos 3 parâmetros (arg1, arg2 e arg3)
arg1 - Tipo de dado que será utilizado como input do processamento (pode não ter nenhum ou pode ser mais de um)
arg2 - Tipo de dado que será retornado durante o processamento (se necessário. Ex: exibir progresso do processamento)
arg3 - Tipo de dado que será retornado após o processamento (pode não ter nenhum).
O método doInBackground() é onde você define o que será processado em background e precisa receber parâmetros do mesmo tipo definido em arg1 e retornar um valor do mesmo tipo definido em arg3. Os parâmetros são acessados pelo array param[]. Se só tiver um, por exemplo, será o param[0].
O método onPostExecute() pega o valor retornado pelo método acima (que é o argumento “result”) e repassa para a thread principal (UI), então você pode exibir uma mensagem com o dado, setar um TextView, exibir a imagem processada, etc.
Os outros 2 métodos são opcionais:
onPreExecute() - Se quiser fazer alguma coisa antes do processamento começar
onProgressUpdate() - retorna um valor intermediário para a UI do mesmo tipo definido em arg2. Opcional. Ex: status de progresso.
Uma vez definido tudo, só iniciar a execução. Ex:
privateclassDownloadFilesTaskextendsAsyncTask<URL,Integer,Long>{protectedLongdoInBackground(URL...urls){intcount=urls.length;longtotalSize=0;for(inti=0;i<count;i++){totalSize+=Downloader.downloadFile(urls[i]);publishProgress((int)((i/(float)count)*100));// Escape early if cancel() is calledif(isCancelled())break;}returntotalSize;}protectedvoidonProgressUpdate(Integer...progress){setProgressPercent(progress[0]);}protectedvoidonPostExecute(Longresult){showDialog("Downloaded "+result+" bytes");}}DownloadFilesTasktask=newDownloadFilesTask();task.execute(url1,url2,url3);