Ho un'applicazione che utilizza AsyncTasks per effettuare chiamate a un server REST.Quando l'app passa allo sfondo durante un'esecuzione AsyncTask, cosa dovrebbe fare?
Immaginate che durante un periodo di caricamento (questo è AsyncTask che va al server REST e porta i dati alla schermata successiva) l'utente preme Home.
ciò che è raccomandato:
- Annullare l'AsyncTask corrente (s) e riavviare quando si riprende l'attività
o
- continuare l'AsyncTasks ma evitando la startActivity controllando se l'app è in background (per evitare il primo piano della nuova attività dopo aver inviato l'app allo sfondo). E onResume invio alla prossima attività
scenari peggiori che si dovrebbe prevedere:
- L'applicazione va in background e viene ucciso a causa della mancanza di memoria
- L'AsyncTask fallisce a causa di timeout o altro errore REST
Dopo che entrambi, l'utente torna al app ...
dipende dal vostro requisito.
Se vuoi chiedere come fare uno dei due modi che hai menzionato, è un caso diverso.
Indica se è quello che ti serviva. – akkilis
No, so come implementare. Voglio sapere se comunque i due sono più consigliati e perché. Quali sono i problemi e i vantaggi di ciascuno. – neteinstein
Come ho detto, dipende dalle vostre esigenze. 1. Si accerterà che non venga intrapresa alcuna azione dopo che l'attività è stata messa in pausa e si assicura che vengano neutralizzate alcune eccezioni comuni sollevate in tali casi. 2. Richiederà un po 'più di attenzione nel codice e manterrà la variabile di stato ed è più sofisticato in termini di esperienza. Ma hai il problema di aumentare le eccezioni/o l'incongruenza nel caso in cui Android abbia rimosso la tua attività dallo stack delle attività. In tal caso il thread verrà caricato nuovamente nonostante sia stato eseguito in passato perché l'istanza precedente è stata cancellata da Android. – akkilis