{"id":11787,"date":"2016-06-07T12:35:56","date_gmt":"2016-06-07T10:35:56","guid":{"rendered":"http:\/\/www.devapp.it\/wordpress\/?p=11787"},"modified":"2016-06-07T14:49:16","modified_gmt":"2016-06-07T12:49:16","slug":"parceler-serializzazione-comoda-ed-efficiente-di-oggetti-android","status":"publish","type":"post","link":"https:\/\/www.devapp.it\/wordpress\/parceler-serializzazione-comoda-ed-efficiente-di-oggetti-android\/","title":{"rendered":"Parceler: serializzazione comoda ed efficiente di oggetti Android"},"content":{"rendered":"<p>Nella <strong>programmazione Android<\/strong>, capita di dover passare oggetti tra Context diversi come quando da un&#8217;Activity ne attiviamo un&#8217;altra. Nei casi in cui essi presentano una struttura articolata perch\u00e8, ad esempio, sono basati su classi definite da noi, \u00e8 necessario ricorrere alla <strong>serializzazione<\/strong>, procedimento col quale si rende lineare\u00a0l&#8217;architettura interna di un oggetto in modo che sia\u00a0pi\u00f9 idonea al salvataggio e alla trasmissione in rete.<\/p>\n<p>In Android si dispone della serializzazione Java la quale per\u00f2 si dimostra dispendiosa in termini di elaborazione essendo basata sul meccanismo della Reflection. Per questo, ne \u00e8 stata inventata una forma pi\u00f9 efficiente basata sull&#8217;interfaccia <strong>Parcelable<\/strong> la cui implementazione non risulta sempre comoda. In casi simili, per non rinunciare all&#8217;efficienza del parcelling Android, ma neanche alla comodit\u00e0 della serializzazione Java, si pu\u00f2 ricorrere a librerie come\u00a0<a href=\"https:\/\/github.com\/johncarl81\/parceler\" target=\"_blank\">Parceler<\/a>\u00a0che con una semplice annotazione rende Parcellable un oggetto:<\/p>\n<pre class=\"lang:java decode:true \">@Parcel\r\npublic class Example {\r\n    String name;\r\n    int age;\r\n\r\n    public Example(){ \/*Costruttore vuoto obbligatorio*\/ }\r\n    \r\n    \/*\r\n         ulteriori metodi della classe \r\n    *\/\r\n}<\/pre>\n<p>L&#8217;uso della classe sar\u00e0 poi immediato permettendo serializzazione:<\/p>\n<pre class=\"lang:java decode:true \">Parcelable wrapped = Parcels.wrap(new Example(\"Andy\", 42));<\/pre>\n<p>e la deserializzazione:<\/p>\n<pre class=\"lang:java decode:true \">Example example = Parcels.unwrap(wrapped);\r\nexample.getName(); \/\/ Andy\r\nexample.getAge(); \/\/ 42<\/pre>\n<p>Se la noiosa implementazione di una classe Parcelable vi aveva fatto ricorrere alla pi\u00f9 comoda serializzazione Java, ora \u00e8 il momento di ricredersi: non rinunciate all&#8217;efficienza delle vostre app!<\/p>\n<p>Vi lasciamo con il link\u00a0alla <a href=\"http:\/\/parceler.org\">pagina ufficiale di Parceler<\/a>.<\/p>\n<p>Alla prossima !<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Nella programmazione Android, capita di dover passare oggetti tra Context diversi come quando da un&#8217;Activity ne attiviamo&#8230;<\/p>\n","protected":false},"author":561,"featured_media":12069,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[534],"tags":[1278,1564,1614,1261,1613],"class_list":["post-11787","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news","tag-android","tag-mobile","tag-parcelable","tag-resources-for-mobile-developers","tag-serialization"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/11787","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/users\/561"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/comments?post=11787"}],"version-history":[{"count":9,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/11787\/revisions"}],"predecessor-version":[{"id":12073,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/11787\/revisions\/12073"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/media\/12069"}],"wp:attachment":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/media?parent=11787"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/categories?post=11787"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/tags?post=11787"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}