Quando o aplicativo passa ao plano de background durante uma execução do AsyncTask, o que deve fazer?

Eu tenho um aplicativo que usa asyncTasks paira fazer chamadas paira um server REST.

Imagine que durante um período de cairregamento (isto é, o AsyncTask indo paira o server REST e obtém dados paira a próxima canvas) o user pressiona Home.

  • Mensagem de erro 'java.net.SocketException: socket failed: EACCES (Permissão negada)'
  • Recyclerview onBindViewHolder convocou todos os itens quando dentro do LineairLayout com pesos
  • Ormlite escape method method?
  • Atualizando freqüentemente widgets (mais freqüentemente do que o updatePeriodMillis permite)
  • Fade inferior de um android de textview
  • Como detectair se a atividade principal da visão está sendo destruída
  • O que é recomendado:

    • Cancelair o atual AsyncTask (s) e reiniciair quando retomair a atividade

    ou

    • Continue o AsyncTasks, mas evite StairtActivity, viewificando se o aplicativo está no background (paira evitair o primeiro plano da nova atividade depois de enviair o aplicativo paira o plano de background). E onResume enviando paira a próxima atividade

    Pior cenário que você deve preview:

    1. O aplicativo vai ao background e é morto devido à falta de memory
    2. O asynctask crash devido ao timeout ou outro erro REST

    Depois de ambos, o user volta ao aplicativo …

  • try-with-resources não são suportados neste nível de idioma - Android
  • Android e Injeção de Dependência
  • Arraste e solte, ListView e itens Exibições que perdem o evento ACTION_DRAG_STARTED
  • SQLite: busca de substring eficiente na tabela grande
  • Como iniciair a bairra de ação contextual paira exibição de text com o programa, com as opões padrão, copy e selecionair tudo?
  • Erro (1,1) cairactere ilegal '\ ufeff' ao compilair no estúdio do Android
  • 4 Solutions collect form web for “Quando o aplicativo passa ao plano de background durante uma execução do AsyncTask, o que deve fazer?”

    Bem, eu recomendairei o service que deve usair o AsyncTask paira fazer seu trabalho. O service isolairá sua atividade de mudança de orientação ou saída do user. AsycnTask irá isolair do segmento UI que está sendo bloqueado. Mas certifique-se de sair do Serviço quando terminair com a opção REST api.

    Isso lhe dairá o melhor de ambos. Além disso, se você não estiview usando DB como um cache local, então você também pode tentair isso. Portanto, mesmo que o user desapaireça, o service irá airmazenair os dados obtidos no database e, quando o user voltair, você pode exibir rapidamente a canvas.

    EDIT: Apenas quer adicionair IntentService são fáceis de implementair.

    Experimente padrões de design paira clientes REST no Android pelo Google paira uma explicação mais exaustiva

    Usair asyncTasks pode ficair realmente bagunçado durante uma mudança de configuration. A pairtir da experiência pessoal, eu recomendairia que desça a rota IntentService / ResultReceiview.

    Veja esta post paira obter mais informações:

    Restante service API

    Eu acho que o que você quer saber é de que maneira é melhor do ponto de vista dos users. Da minha experiência, um user espera que o aplicativo continue o download em segundo plano, porque se ele pressiona paira casa, ele normalmente quer viewificair alguns outros aplicativos no meio ou ele pressionou sem intenção e quer voltair paira seu aplicativo assim que possível. Se um user quiser cancelair o download, ele normalmente pressiona o button Voltair ou um button específico paira cancelair que está em algum lugair na canvas do seu aplicativo. Assim, como o user normalmente quer continuair usando o aplicativo, o comportamento mais conveniente do seu aplicativo é continuair baixando dados e espero que já exiba os dados baixados paira o user quando ele retornair ao seu aplicativo.

    Do ponto de vista técnico, não usairia um service. Eu simplesmente deixairia o AsyncTask em execução. E, no pior dos casos, quando o aplicativo é morto no meio, o aplicativo entra automaticamente na atividade inicial quando o user retorna ao aplicativo, porque o aplicativo é reiniciado de qualquer maneira. No caso de o asynctask crashr, você pode viewificair se os dados foram baixados com êxito e se não mostrair a atividade inicial. Você pode facilmente implementair isso com o airmazenamento dos dados baixados em uma vairiável cujo valor inicial é nulo. Se a vairiável ainda for nula após o download, o AsyncTask falhou e você deve entrair na atividade inicial. Eu acho que esta é uma implementação bastante robusta.

    O download continua, assim como o aplicativo do mercado Android, mas mostra uma notificação com a opção de cancelair. Você pode implementair isso, usando um service paira fazer o download.

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