TP 4 Intent, IntentFilter et Receiver

Modérateurs : douinj, lemoinef, farinonj

ngo_w
Messages : 3
Inscription : 06 nov. 2020 21:29

TP 4 Intent, IntentFilter et Receiver

Message par ngo_w » 21 mars 2021 18:54

Bonjour

Quelques interrogations sur le TP 4
- D'après le canevas fourni, je n'ai pas réussi à faire persister l'instance de ticker ni avec Sérializable ni avec Parcel. Avec Sérializable j'obtiens une exception de type

Code : Tout sélectionner

java.lang.RuntimeException: Parcelable encountered IOException writing serializable object
quand je quitte l'activité avec le bouton Home par example. Et avec l'implémentation de Parcelable, j'obtiens une stackOverflow. Après plusieurs recherches sur Internet et sur le cours persistance de NFP121, il semble admis qu'une sous classe de Thread ne peut être en plus Sérializable. Est-ce la raison de l'exception lancée? Par contre un changement d'orientation fonctionne chez moi...

- Pour la persistance par Parcel de la classe Ticker, on demande une implémentation d'une méthode statique Creator ce qui n'est pas possible pour une classe interne. Je pourrais rendre la classe interne statique mais alors il faudrait une autre façon de référencer Main.activity.this

Des témoignages ou des pistes seraient le bienvenu

thorn_ph
Messages : 22
Inscription : 25 févr. 2021 18:17

Re: TP 4 Intent, IntentFilter et Receiver

Message par thorn_ph » 21 mars 2021 20:12

Bonjour,

J'ai eu pas mal d'erreur également car android recommande Parcelable plutôt que Serializable. Les Threads ne sont pas serializable. Voilà ce que dit java :
"To allow subtypes of non-serializable classes to be serialized, the subtype may assume responsibility for saving and restoring the state of the supertype's public, protected, and (if accessible) package fields."

C'est tiré d'un forum : https://stackoverflow.com/questions/106 ... be-started

Personnellement, j'ai laissé tombé la méthode interrupt(), j'ai utilisé un bouléen pour sortir de la méthode run() de la classe Ticker et ainsi arrêter l'horloge. Côte bouton start, j'ai créé mon Ticker dans la méthode appelée par le bouton car lorsque je le fais dans la méthode onCreate mon appli crash. Un autre lien utile pour tout ça :
https://codinginflow.com/tutorials/andr ... und-thread

A+ et bon courage

Philippe

douinj
Messages : 281
Inscription : 18 mars 2009 15:46

Re: TP 4 Intent, IntentFilter et Receiver

Message par douinj » 23 mars 2021 13:40

Bonjour

N'est-il pas plus simple de recréer le Thread à chaque interruption ? avec en préalable la sauvegarde de l'état

Pour ce qui est de la sérialisation, d'un thread, il vous faut le qualificatif transient diapositive 8 de http://lmi92.cnam.fr/nfp121/supports/NF ... ML_DAO.pdf

Bonne fin de tp

Répondre