Tecnologia do Blogger.
RSS

Re: [androidbrasil-dev] Concorrência de Task

Order of execution


When first introduced, AsyncTasks were executed serially on a single background thread. Starting with DONUT, this was changed to a pool of threads allowing multiple tasks to operate in parallel. Starting with HONEYCOMB, tasks are executed on a single thread to avoid common application errors caused by parallel execution.

If you truly want parallel execution, you can invoke executeOnExecutor(java.util.concurrent.Executor, Object[]) withTHREAD_POOL_EXECUTOR.


Lúcio Maciel
luciofm@gmail.com


2013/2/1 Marcos Reis | .Mobi <marcos.reis@pontomobi.com.br>
Bom dia galera,

Estou com um problema bastante incomum aqui e gostaria da ajuda de vocês.
Possuo o seguinte cenário:

- No momento que minha aplicação inicia eu realizo uma requisição em meu servidor que me retorna um json informando se houve ou não o cadastro de algum recurso novo. Caso positivo eu populo uma List de AsyncTaks para serem disparadas depois.

- Ao entrar na aplicação existe uma lista de opções onde quando forem acessadas devem buscar os dados no BD para popular os conteúdos a serem exibidos e chamar o método do meu "Pool" para iniciar as tasks de download dos novos recursos (que são imagens i vídeos).

- O que ocorre é o seguinte, a primeira vez que entro na tela ele busca o conteúdo rapidamente e da inicio as tasks de download, entretanto se eu sair da tela e entrar em outra opção do menu os dados somente aparecem depois que TODAS as outras taks de download são concluídas.

Eu acredito que o Android esta enfileirando as taks que estão sendo executadas e chamando uma após a outra de modo sincronizado (syncronized), e a minha task de consulta esta entrando sempre no fim da fila, sendo assim, ela só ira ser processada quando todas as outras terminarem.

Pesquisei na internet e encontrei o Process.setThreadPriority(), então coloquei a prioridade na task que consulta o bd para THREAD_PRIORITY_URGENT_DISPLAY e para as tasks de download THREAD_PRIORITY_LOWEST, mas não obtive resultado.

Alguém por acaso já passou por algo deste tipo? ou então teria alguma solução para o meu problema?

Abaixo o link para o source do meu "Pool" e para os dois locais em que alimento a lista de tasks, valeu pela ajuda.

PoolTaskExecutor: http://pastebin.com/6Qym9yPL
AddTaskDownloadResource: http://pastebin.com/ujkvch89
AddTaskReadDataBD: http://pastebin.com/C7CdbAvB


-- 
Cordialmente,
Marcos Reis
Analista de Sistemas / Android

Pontomobi
Any screen,
Anywhere™

São Paulo | Rio | BH | Recife | London





--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
 
 

--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-dev+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
 
 

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

0 comentários:

Postar um comentário