Diretriz paira escolher entre AsyncTaskLoader e AsyncTask paira serem usados ​​em Fragment

Olhe paira LoaderCustomSupport (Use AsyncTaskLoader) e FragmentRetainInstanceSupport (Use Thread, quase equivalente a AsyncTask)

Ambos os exemplos têm as seguintes semelhanças.

  • Ambos não bloqueiam o segmento UI ao cairregair dados
  • O thread de busca de dados não é destruído quando o user executa mudanças de configuration como a rotation da canvas.
  • Quando o process de busca de dados finalizou a busca de dados, ele pode atualizair paira o Fragment UI correto

No entanto, existem diferenças.

AsyncTaskLoader

  • Pairece que não existe uma maneira fácil de atualizair o progresso intermediário paira um dialog de bairra de progresso

AsyncTask

  • Não tenho certeza sobre isso. Mas a documentation do Android pairece recomendair o AsyncTaskLoader paira dados asynchronouss, cairregando e atualizando o resultado final paira a IU ?

Existe uma diretriz ou list de viewificação paira viewificair se escolher AsyncTaskLoader ou AsyncTask paira fazer uma tairefa de cairregamento demorado e atualizair o resultado paira a UI do Fragment?

2 Solutions collect form web for “Diretriz paira escolher entre AsyncTaskLoader e AsyncTask paira serem usados ​​em Fragment”

sua pergunta me interessou e tentei às vezes examinair as diferenças. Aqui estou escrevendo minhas observações.

  1. Paira o término prematuro, a tairefa assíncrona usando AsyncTask continuairá sendo executada em seu segmento. O processamento dos resultados pode em breve levair a resultados não solicitados enquanto o AsyncTaskLoader lida com o término prematuro da atividade

  2. O AsyncTaskLoader lida com mudanças de configuration de atividade (IE quando o user gira a canvas).

  3. AsyncTaskLoader destina-se a cairregair dados paira DataAdapters, então, paira este propósito, é melhor usair o AsyncTaskLoader. Mas se você precisair alterair UI (especialmente fragments) após a conclusão da tairefa, é melhor usair o AsyncTask, pois você não pode alterair fragments em onLoadFinished of AsynTaskLoader.

Então, paira mim, o uso depende da sua tairefa. e se os 3 pontos acima não o incomodairem, então o performance é o mesmo (ainda não encontrou nenhum documento, mas neste caso, recomenda-se o asynctaskloader: S)

alguns links relacionados

AsyncTaskLoader vs AsyncTask

http://andreas-kluck.blogspot.com/2012/02/asynctask-and-asynctaskloader.html

AsyncTaskLoaders, como todos os cairregadores, destinam-se a resolview o problema de rotation, que é quando um AsyncTask é criado em uma atividade, então o dispositivo é girado antes da tairefa ter concluído que o AsyncTask será perdido com a destruição da atividade.

É viewdade que todos os cairregadores atualmente não suportam o progresso da publicação, portanto, se este for um requisito paira sua situação, então você deve considerair uma alternativa. Se a rotation, ou qualquer outro evento que cause a atividade ser destruída, não é um problema, basta usair um AsyncTask, caso contrário, você pode querer usair um Serviço e registrair um fichário paira empurrair as mensagens de progresso paira frente e paira trás.

As mensagens do service e da pasta são, no entanto, uma espécie de dúvida. Eu acho que uma solução muito mais fácil é usair LocalBroadcastManager paira enviair transmissões de progresso de um IntentService (ou AsyncTaskLoader) e ter um BroadcastReceiview na atividade, receber a transmissão e exibir o progresso.

Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.