Pergunta

Suponha que você deseja iniciar uma nova atividade e passá-lo alguns dados de atividade atual. Se os dados são de um tipo primitivo, você poderia simplesmente usar uma intenção e adicionar extras, mas como você faria isso por estruturas de dados mais complexos como ArrayLists ou objetos?

Foi útil?

Solução

Você tem algumas opções:

  1. Você poderia envolver a estrutura mais complexa em uma classe que implementa a interface Parcelable, que podem ser armazenados em um extra
  2. Você poderia envolver a estrutura mais complexa em uma classe que implementa a interface Serializable, que podem ser armazenados em um extra
  3. Você usar membros de dados estáticos para passar coisas ao redor, uma vez que eles estão todos no mesmo processo
  4. Você usar armazenamento externo (arquivo, banco de dados, SharedPreferences)
  5. Como a pessoa que postou observou, use um componente comum, como um Application personalizado ou um Service locais

O que você não quer fazer é passar coisas grandes via extras. Por exemplo, se você estiver criando um aplicativo que agarra fotos da câmera, você não quer passar aqueles em extras - usar um membro de dados estáticos (icky como isso soa). Intenções são projetados para cross-processo de trabalho, o que significa que há uma certa quantidade de dados copiando o que se passa, o que você quer evitar quando ele não é necessário para coisas grandes.

Outras dicas

Uma opção Estou ciente está armazenando os dados que você está usando em um objeto Application que todas as suas atividades pode recuperar a partir do contexto.

Eu também ouvi de usar Tampão Google Protocol para alcançar uma maior solução realizando

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top