Descobrir que caminho seguir requer responder não apenas à pergunta-chave do CommonsWare sobre "por que", mas também à pergunta "para quê?" você está passando.
A realidade é que a única coisa que pode passar por pacotes são dados simples - todo o resto é baseado em interpretações do que esses dados significam ou apontam. Você não pode literalmente passar um objeto, mas o que você pode fazer é uma das três coisas:
1) Você pode dividir o objeto em seus dados constituídos e, se o que está do outro lado tiver conhecimento do mesmo tipo de objeto, pode montar um clone a partir dos dados serializados. É assim que a maioria dos tipos comuns passa pelos pacotes.
2) Você pode passar uma alça opaca. Se você estiver passando dentro do mesmo contexto (embora alguém possa perguntar por que se preocupar), esse será um identificador que você pode invocar ou desreferenciar. Mas se você passá-lo pelo Binder para um contexto diferente, seu valor literal será um número arbitrário (na verdade, esses números arbitrários contam sequencialmente desde a inicialização). Você não pode fazer nada além de mantê-lo sob controle, até que você o passe de volta ao contexto original, o que fará com que o Binder o transforme de volta ao identificador original, tornando-o útil novamente.
3) Você pode passar um identificador mágico, como um descritor de arquivo ou referência a certos objetos os / plataforma, e se definir os sinalizadores corretos, o Binder criará um clone apontando para o mesmo recurso para o destinatário, que pode realmente ser usado em O outro fim. Mas isso só funciona para alguns tipos de objetos.
Provavelmente, você está passando em sua classe apenas para que o outro lado possa acompanhá-la e devolvê-la a você mais tarde, ou está passando para um contexto onde um clone pode ser criado a partir de dados constituintes serializados ... ou então você está tentando fazer algo que simplesmente não vai funcionar e precisa repensar toda a abordagem.