Voglio marshall e unmarshall una classe che implementa Parcelable
in/da un array di byte. Sono ben consapevole del fatto che la rappresentazione Parcelable non è stabile e quindi non è pensata per l'archiviazione a lungo termine delle istanze. Ma ho un caso d'uso in cui ho bisogno di serializzare un oggetto e non è un fermo di scena se l'unmarshalling fallisce a causa di una modifica interna di Android. Anche la classe sta già implementando l'interfaccia Parcelable
.Come eseguire il marshall e l'unmarshall Parcelable su un array di byte con l'aiuto di Parcel?
Data una classe MyClass implements Parcelable
, come è possibile (ab) utilizzare l'interfaccia Parcelable
per marshalling/unmarshalling?
'parcel.setDataPosition (0); // questo è estremamente importante! 'questo mi aiuta molto. la mancanza del documento Android di questo, fa davvero schifo. –
Grazie mille per questo suggerimento. Implementare Parcelable (che è estremamente soggetto a errori e otterrete eccezioni runtime senza significato e clienti arrabbiati se non fatto bene) è un tale PITA - sto evitando Parcelables nel mio codice del tutto e sto usando Serializables. Sui telefoni moderni, il colpo di velocità è appena percettibile. –
L'unico problema con questo approccio, tuttavia, è che l'unmarshalling di una sottoclasse di classi che implementa Parcelable non sarà così semplice. Dovrai passare informazioni extra da cui puoi giudicare il Creatore corretto da usare. – bosphere