Quelle est la différence entre Parcelable et Serialization utilisés dans android

je veux savoir exact,

  1. si je dois utiliser parcelable ou serialization technique pour envoyer des données d'une activité à l'autre?
  2. est-il obligatoire de utiliser l'un d'eux pour l'envoi de données de l'un à l'autre?
  3. Quand dois-je les utiliser?
  4. et la différence entre eux et les performances des deux dans les aspects java.

Merci préalablement.


 public class GetSetClass implements Serializable {
    private int dt = 10;

    /** pass any object, drwabale */
    public int getDt() {
        return dt;
    }

    public void setDt(int dt) {
        this.dt = dt;
    }
}
32
demandé sur phi 2012-06-18 10:32:52

5 réponses

si je devais utiliser la technique de morcellement ou de sérialisation pour envoyer des données d'une activité à l'autre.

si vous envoyez un type non primitif de données/objet à une autre activité par le biais du intent vous devez soit Serialize ou implémenter Parcelable pour cet objet. La technique préférée est Parcelable car elle n'affecte pas la performance.

est-il obligatoire de utiliser l'un d'eux pour l'envoi de données de l'un à l'autre. / quand dois-je utiliser.

il est seulement obligatoire/utilisé pour l'envoi d'objets de données de type non primitif.

et la différence exacte entre eux et la performance des deux dans les aspects java.

Sérialisation a un impact sur la performance. Pour plus de détails, consultez ce lien Android

19
répondu Arun George 2017-05-23 11:54:02

ces concepts sont liés à la Communication inter-processus (IPC).

lors de l'envoi de données entre deux applications, nous devons nous assurer que les deux applications doivent comprendre le format des données qui sont envoyées.

surtout quand vous envoyez des valeurs de type de données non primitives comme des classes et des objets entre deux applications, nous devons les convertir en format compréhensible de système d'exploitation. O. S comprend seulement la primitive types (entiers, caractères, etc). La raison de la conversion est que nous devons à la voie de communication O. S pour transmettre les données.

ce processus de conversion de types Non primitifs en primitives et d'envoi à une autre application sur un canal de communication est appelé comme sérialisation. Le processus inverse s'appelle la désérialisation.

en Java, la CIB dépend fortement des sérialisables pour la sérialisation. Mais la sérialisation est conçu par garder de bureau dans l'optique d'applications. Lorsque vous faites de la CIB dans des applications mobiles, nous devons nous assurer que le processus de la CIB n'est pas trop lourd.

en termes simples, la sérialisation est un concept lourd pour la CIB. Ainsi, à la place de la sérialisation Android a opté pour des liants pour la réalisation de la communication légère entre les processus. Les classeurs à l'interne dépendent fortement des colis, pour faire la CIB. Les colis sont des articles de série légers. Il est préférable d'utiliser les parcelles pour regrouper les objets dans un octet. flux.

Note: la CIB de reliure dépend fortement du concept de mémoire partagée pour s'assurer qu'il n'y a pas beaucoup de duplication de données tout en partageant entre les applications.

25
répondu user1923551 2014-04-10 15:46:52

a obtenu une très bonne explication de la différence entre Morcelable et sérialisation.

pour commencer avec votre question bien que cela ait été un long temps, il peut aider les autres:

  1. est-ce que je devrais utiliser la technique de morcellement ou de sérialisation pour envoyer des données d'une activité à une autre?

Ans: divisible est le meilleur choix (pourquoi expliqué plus tard).

  1. est-il obligatoire d'utiliser l'un d'eux pour l'envoi de données de l'un à l'autre?

Ans: oui, car l'envoi de données (objet) de l'un à l'autre nécessite des flux d'octets à écrire et à récupérer, ce qui peut être fait soit par l'intermédiaire de séparables, soit par sérialisation.

  1. Quand dois-je les utiliser?

Réponse: Cette partie vous déjà réponse I. e, transmettre des données d'une activité à une autre.

  1. et la différence exacte entre eux et la performance des deux dans les aspects java.

Réponse: 1. Parcellable est bien documenté dans le SDK Android; serialization d'autre part est disponible en Java.

  1. dans parcellaire, les développeurs écrivent le code personnalisé pour la formation et la suppression des sélections il crée donc moins d'objets de rebut par rapport à la sérialisation. Les performances de Morcelable over Serialization s'améliorent considérablement (environ deux fois plus vite), grâce à cette implémentation personnalisée.

  2. la sérialisation est une interface marqueur, ce qui implique que l'utilisateur ne peut pas rassembler les données selon leurs besoins. En sérialisation, une opération de marshaling est effectuée sur une machine virtuelle Java (JVM) en utilisant L'API Java reflection. Ce aide à identifier le membre et le comportement des objets Java, mais finit aussi par créer beaucoup d'objets de rebut. Pour cette raison, le processus de sérialisation est lent par rapport à celui de Morcelable.

réponse tirée de: ce lien

Voir aussi: sérialisation expliqué

5
répondu Bette Devine 2017-05-23 11:54:02

Java Serializable :- Serialisable vient de Java standard et est beaucoup plus facile à mettre en œuvre tout ce que vous devez faire est de mettre en œuvre l'interface Serialisable et ajouter outrepasser deux méthodes.

le problème avec le Serialisable est qu'il essaie de gérer correctement tout sous le soleil et utilise beaucoup de réflexion pour faire déterminer les types qui sont sérialisés. Donc ça devient un objet costaud.



Androïdes Divisibles :- Android Inter - processus de Communication (AIPC) fichier pour dire à Android Comment est devrait marshal et démarshal votre objet.Il est moins générique et n'utilise pas la réflexion, donc il devrait avoir beaucoup moins de frais généraux et être beaucoup plus rapide.

Lire la suite de http://www.3pillarglobal.com/blog/parcelable-vs-java-serialization-android-app-development

3
répondu Sridhar Nalam 2013-12-04 11:34:09

le morcellement et la sérialisation sont des moyens de marshall et données unmarshal. dans android Ceci est utilisé pour passer des types de données non primitifs entre les composants et les processus. en général, android permet soit sérialisable ou des objets séparables, de sorte que vous pouvez choisir votre méthode. l'exception à cette règle concerne les interfaces AIDL. les objets doivent être séparables pour être passés / retournés.

La sérialisation

utilise la réflexion pour marshall automatiquement et les données unmarshal. dans la plupart des cas la mise en œuvre de l'interface marker est suffisante pour que cela fonctionne. avec parceling, vous devez écrire le code à marshall et démarshal les données vous-même.

et donc, c'est pourquoi morcellement est plus rapide. l'objet n'a pas besoin d'être réfléchie pour découvrir les champs. c'est la réflexion qui le rend lent.

La sérialisation

a aussi une version intégrée ... si vous essayez de démarshal à une version différente de la classe de l'objet qui a été marshalled, le processus échouera dans une manière prévisible. avec parceling, vous pouvez faire la même chose, mais vous devez l'implémenter vous-même en ajoutant un champ "version" à votre objet, et un code qui vérifie la version lors de la désactivation.

cela dit, j'utilise généralement la sérialisation. avec des objets simples, vous ne remarquerez pas la différence. vous pouvez toujours passer à l'utilisation de parceler plus tard dans le développement si vous découvrez des problèmes de performance.

2
répondu Jeffrey Blattman 2013-11-18 16:45:47