Page 1 sur 1

TP6

Publié : 03 avr. 2021 19:39
par marim_he
Bonjour,

Dans la question 2, j'arrive bien à arrêter le chargement du fichier en appelant la méthode loader.cancel(true)
où loader est une instance de la classe Loader extends AsynchTask.

Cependant, je ne parviens pas à relancer le chargement. J'ai utilisé un booléen isInterrupted mis à jour à false dans la méthode onClickResume() mais sans succès.

Je suis à la recherche d'une idée pour me débloquer et poursuivre le TP.

Merci.

Hervé

Re: TP6

Publié : 03 avr. 2021 20:49
par marim_he
Je précise, je ne parviens pas à relancer le chargement depuis l'endroit où il a été arrêté. Il reprend depuis le début de la liste.

Re: TP6

Publié : 03 avr. 2021 21:39
par thorn_ph
Bonjour,

L'idée que j'ai mise en oeuvre est basée aussi sur la méthode cancel. En fait, une fois loader.cancel(true), dans DoInBackground je quitte la boucle while de lecture du fichier avec:
if (isCancelled) break;

Pour relancer à la bonne ligne il faut enregistrer le numéro de la dernière ligne lue. Avec une instance LineNumberReader, utiliser reader.getLineNumber(). Si la lecture est réalisée avec un BufferReader je ne sais pas quelle est la commande exacte.

Dans la boucle while il faut bien sûr ajouter une condition IF. Certes la lecture recommence au début, mais il ne faut afficher les cantons qu'à partir de la dernière ligne (précédemment sauvegardée). Par afficher les cantons, je veux dire mettre à jour l'Adapter. C'est cela que prend en compte cette condition.

En sauvegardant la dernière ligne lue avant interruption (cancel), puis une condition pour afficher dans la vue (mise à jour de l'adapter) seulement les cantons à partir de cette ligne, ça marche.

A+

Philippe THORNER

Re: TP6

Publié : 03 avr. 2021 21:56
par marim_he
Merci beaucoup Philippe.
Je tournais en rond depuis un bon moment et tu m'as permis de m'en sortir.

Re: TP6

Publié : 04 avr. 2021 13:07
par thorn_ph
Bonjour,

de rien. Content d'avoir pu t'aider.

A+

Philippe