O Google está descontinuando a API AsyncTask do Android no Android 11

click fraud protection

A API Android para lógica assíncrona, AsyncTask, está em vias de extinção. De acordo com um commit do AOSP, a API será obsoleta no Android 11.

Há anos, o AsyncTask do Android tem sido uma ferramenta básica para desenvolvedores iniciantes e experientes. Se você já pesquisou no Google um tutorial sobre qualquer tipo de lógica assíncrona no Android, é provável que os primeiros resultados sugiram o uso de AsyncTask. Também não é como se esta fosse uma escolha aleatória. AsyncTask foi originalmente criado para simplificar a interação entre operações em segundo plano e a UI de um aplicativo. Por um tempo, funcionou bem. AsyncTask realmente ajuda a simplificar tarefas assíncronas. Isso não significa que seja perfeito.

Uma coisa que muitos aplicativos precisam fazer é obter informações de um servidor remoto. Como as solicitações de rede podem demorar um pouco, geralmente é importante fazê-las de forma assíncrona para que não causem o congelamento do aplicativo. Assim que a operação for concluída, a IU poderá ser atualizada. No entanto, é possível que, no momento em que a solicitação de rede for concluída, a parte relevante da IU não exista mais, o que pode causar falhas ou outros bugs. Embora o AsyncTask simplifique o processo geral, ele não respeita o ciclo de vida do aplicativo Android. Isso significa que não há proteção integrada contra o término de um AsyncTask após uma alteração na interface do usuário. Claro, é possível adicionar manualmente verificações e outras proteções, mas isso adiciona muito código repetido (também conhecido como clichê). Por causa de problemas como esse, o AsyncTask caiu no esquecimento. O Google também não fez muitas mudanças em seu funcionamento.

Bem, parece que a opinião do Google é que o AsyncTask não pode ser salvo. Em um commit recente do AOSP, o AsyncTask foi descontinuado, citando motivos semelhantes aos que acabei de falar. Embora esta não seja realmente uma grande mudança para os usuários finais, pode significar muito para os desenvolvedores. Se você mantém uma base de código mais antiga ou está apenas começando com tarefas assíncronas no Android, provavelmente precisará alterar vários códigos. Felizmente, porém, o Google não deixou os desenvolvedores comendo poeira.

Devido às limitações do AsyncTask, alternativas surgiram ao longo do tempo, como RxJava e a nova (ish) biblioteca Coroutines do Kotlin. Essas alternativas tendem a ter muito mais flexibilidade e recursos do que AsyncTask, por isso ganharam bastante popularidade. Em seu aviso de descontinuação do AsyncTask, o Google recomenda o uso da estrutura de simultaneidade do Java ou das corrotinas Kotlin.

Pessoalmente, já comecei a usar as Coroutines do Kotlin e não olhei para trás. Claro, eu sei que muitas pessoas integraram seu código firmemente ao AsyncTask, então isso provavelmente é pelo menos um pequeno inconveniente para elas. É bom que haja muitas alternativas para escolher. Pode ser irritante alterar seu código, mas pelo menos é possível desta vez.

Se você quiser mais detalhes, você pode conferir o commit aqui. O commit foi mesclado hoje cedo e, a menos que haja uma versão de manutenção do Android em andamento, veremos essa mudança refletida no Android 11 no próximo ano.