Domanda

Supponi di voler iniziare una nuova attività e passargli alcuni dati dall'attività corrente. Se i dati sono di tipo primitivo, potresti semplicemente usare un intento e aggiungere extra, ma come faresti per strutture di dati più complesse come gli array o gli oggetti?

È stato utile?

Soluzione

Hai alcune opzioni:

  1. Potresti avvolgere la struttura più complessa in una classe che implementa l'interfaccia Parcelable , che può essere memorizzata in un extra
  2. Potresti avvolgere la struttura più complessa in una classe che implementa l'interfaccia Serializable , che può essere memorizzata in un extra
  3. Utilizzi membri di dati statici per passare informazioni, poiché sono tutti nello stesso processo
  4. Utilizzi memoria esterna (file, database, SharedPreferences )
  5. Come notato dalla persona che ha appena pubblicato, usa un componente comune, come un Applicazione o un Service
  6. locali

Quello che non vuoi fare è passare grandi cose tramite extra. Ad esempio, se si sta creando un'applicazione che cattura le immagini dalla fotocamera, non si desidera passare quelle negli extra: utilizzare un membro di dati statici (icky come sembra). Gli intenti sono progettati per funzionare tra processi, il che significa che c'è una quantità di copia dei dati che continua, che si desidera evitare quando non è necessario per grandi cose.

Altri suggerimenti

Un'opzione di cui sono a conoscenza è l'archiviazione dei dati che stai utilizzando in un oggetto Applicazione che tutte le tue attività possono recuperare dal contesto.

Ho anche sentito parlare dell'utilizzo di Buffer di protocollo di Google per raggiungere una soluzione dalle prestazioni più elevate

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top