Utilizando a interface Parcelable no Android

15 June 2015

Como e por qual razão utilizar essa interface do Android SDK

Antes de definir o que é essa interface, vamos olhar o que diz a documentação do Android:

Interface for classes whose instances can be written to and restored from a Parcel. Classes implementing the Parcelable interface must also have a static field called CREATOR, which is an object implementing the Parcelable.Creator interface.

Sobre o Parcelable

A partir da documentação é possível concluir que essa interface é utilizada para escrita e leitura de algo chamado Parcel. Além disso, para utilizar essa interface, sua classe precisa de um campo chamado CREATOR. Enfim, nada muito convidativo a utilizar no caso de você não saber o que é isso.

Quando usar?

Em diversas situações em um aplicativo Android é necessário passar objetos entre Activitys. Quando a informação que precisa ser passada é do tipo String, Integer ou mesmo tipos primitivos utilizar uma Intent para essa operação é bem fácil e simples. Basta colocar a informação na forma de par chave-valor e enviar pra outra Activity. Porém, se você quiser passar um model seu entre Activities, esse objeto precisa implementar Parcelable.

Resumindo, quando objetos complexos do seu domínio precisam trafegar entre telas de sua app, Parcelable pode ser uma boa opção.

Exemplo de implementação

Como dito na documentação, ao implementar Parcelable sua classe terá de implementar alguns métodos e ter o campo CREATOR. No exemplo abaixo, uma simples classe chamada House, com dois atributos (rooms e color) recebeu uma implementação Parcelable.



Parcelable VS Serializable

Pra quem já trabalhou com Java em outras plataformas diferentes do mobile a comparação com a Interface Serializable é inevitável. Ambos ajudam a trafegar objetos, são interfaces e considerados marcações.

Durante o desenvolvimento de aplicativos Android é possível optar por ambas as soluções, Parcelable ou Serializable, para trafegas objetos pelas Activitys. A grande diferença é que a solução com Parcelable é por volta de 2x mais rápida que a Serializable.

Em resumo, Parcelable é mais rápido que Serializable. Além de ser uma implementação bem documentada no Android SDK.

Conclusão

Pra facilitar a criação de uma classe Parcelable e não ter que escrever todo aquele código mais complexo, existem ferramentas como o Parcelabler. Tente criar a classe House acima pra ver o resultado.

Você pode ver mais informações sobre a interface Parcelable nesse post, com gráficos e implementação comparando as duas abordagens.

comments powered by Disqus