CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[Java / Android] Problème Serializable

[hard]ware
[hard]ware
Niveau 14
17 mars 2019 à 18:57:48

Salut :ok:

Alors voilà on est 4 sur une application mobile (Android).

En gros dans le front-end on a deux "Activités" (bientôt trois normalement), ce qui demande que les classes du back-end implements Serializable.

Problème, c'est que quand on passe d'une "activité" à une autre, les références vers les instances des classes du back-end deviennent null.
A priori le problème vient du back-end, tout ce qui y est fait c'est implements Serializable.

Je devrais certainement écrire les méthodes qu'on trouve dans la doc ( https://docs.oracle.com/javase/7/docs/api/java/io/Serializable.html ) :
private void writeObject(java.io.ObjectOutputStream out) throws IOException private void readObject(java.io.ObjectInputStream in) throws IOException, ClassNotFoundException; private void readObjectNoData() throws ObjectStreamException;

Mais je n'ai vraiment aucune idée de comment les écrire.

Déjà le concept de Serializable, si je comprends bien, on sauvegarde l'état d'un objet dans un fichier afin de le récupérer plus tard ou dans une autre activité.
Et si je comprends bien, une activité, c'est un peu comme un processus. Deux activités c'est un peu comme deux processus. Et donc les variables ou objets ne sont pas partagés entre différentes activités.
Mais de quelle façon enregistrer l'état d'un objet en dur dans un fichier ? ça, je ne comprends pas du tout. Sachant qu'un objet peut contenir des références vers d'autres objets, etc.... :(

Voilà, j'aimerais un peu d'aide !

:merci:

MrAnge
MrAnge
Niveau 10
18 mars 2019 à 07:44:06

Quand tu veux sérialiser une classe il faut que tu spécifie quels champs tu veux enregistrer (dans un fichier mais aussi possible dans une base de donnée).

Par contre tu as d'autre méthode pour faire passer des informations entre deux activités car la c'est une opération assez lourd tu fais un aller-retour ecriture-lecture pour pas grand chose (selon moi)

Tu devrais regarder du coté des Intent.putExtra() si tu n'as pas beaucoup de champs à passer entre tes activités.

Deuxieme solution les singletons ces classes un peu spécial ne sont pas détruites entre l'appel de deux activités il me semble.

lokilok
lokilok
Niveau 16
18 mars 2019 à 08:01:53

Si tu utilises putExtra je pense qu'il vaut mieux implémenter Parcelable que Serializable : https://stackoverflow.com/questions/3323074/android-difference-between-parcelable-and-serializable .

Comme dit MrAnge si tu veux envoyer des données à une activité que tu lances c'est dans l'intent qu'il faut envoyer les infos, sinon si tu veux qu'une activité envoie des données à celle qui l'a lancé faut regarder du côté de startActivityForResult.

Message édité le 18 mars 2019 à 08:02:04 par lokilok
[hard]ware
[hard]ware
Niveau 14
22 mars 2019 à 21:48:04

Bon après plusieurs essais on n'a pas réussi à faire fonctionner ça.

Le problème vient peut-être du fait que les classes qu'on veut sérializer contiennent comme attributs d'autres classes à sérializer etc...
c'est pas des classes Java mais des classes qu'on a créé nous.

enfin bref, on a fini par se rendre compte qu'on n'a pas besoin de sérializer. :noel:

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Internet
  • Macintosh
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment