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
--
Cordialmente,
Marcos Reis
Analista de Sistemas / Android
Pontomobi
Any screen,
Anywhere™
São Paulo | Rio | BH | Recife | London
0 comentários:
Postar um comentário