Pass riferimento di object all'interno di Intent senza implementare Serializable o Parcelable

So che domande simili sono state chieste più volte. Credo di leggerlo di più. Ma nessuna risposta è applicabile.

Ho bisogno di passare oggetti complessi tramite intenti (chiamate di attività / trasmissioni). Tutto è fatto nel mio process. Ecco perché non vedo alcuna ragione per scrivere i miei oggetti in Streams solo per ricomporarli pochi millisecondi dopo. Voglio passare il mio riferimento di object attraverso la mia applicazione. C'è un modo per fare questo.

  • Scala un Bitmapfont in LibGDX
  • Si è arrestato quando è stata applicata la barra degli strumenti
  • Analizzare i dati grezzi ricevuti dal dispositivo HDP Bluetooth
  • Android (o iOS) - Coda di caricamento di immagini
  • Implementare lo scanner di codici a barre in android
  • Come posso submit un messaggio a un contatto specifico tramite WhatsApp dalla mia applicazione android?
  • Poiché la mia applicazione trasmetterà lo stesso evento più volte in una row, non posso fare affidamento sui membri statici. Devo get esattamente lo stesso object per quello che ho trasmesso.

    Questo è il motivo per cui stavo pensando a un "Referente" statico che accetterà un object e restituirà un integer che identifica questo object nella sua list interna in modo da poter passare questo numero integer via .putExtras. Ma per quanto mi conosco Java non ho potuto pulire questo object da questo elenco dopo che è stato aggiunto perché molti Listeners potrebbero essere interessted nello stesso object e dovrei mantenerlo nel mio Referenceholder per sempre (supponendo che un thread può essere ripreso in qualsiasi momento – anche 2 minuti più tardi).

    Qualche idea? Sto facendo qualcosa di sbagliato? O qualunque idea di come posso ripulire le mie referenze (probabilmente dopo alcuni secondi? Questo può portre ad un incidente, ma sembra essere più applicabile di scrivere codice che assembla e reassembra i miei oggetti per nessuna ragione)

  • Carica foto di Android a facebook utilizzando il grafico api?
  • Come cambia lo background durante l'accesso in Instagram?
  • Come personalizzare le singole tabs? (cambiando il colore di background, il colore dell'indicatore e il colore del text)
  • Come posso scrivere il prompt dello spinner di android?
  • MotionEvent.ACTION_CANCEL blocca il successivo ACTION_UP sul mio button
  • get l'evento clic dalla pagina web nella mia applicazione android
  • 2 Solutions collect form web for “Pass riferimento di object all'interno di Intent senza implementare Serializable o Parcelable”

    Le opzioni sono abbastanza chiare: non è ansible passare un object non marshallable (Parcelable, Serializable) in un intento. Punto.

    Quello che potreste potere fare è passare qualcosa che sia un riferimento ad un object non-marshallable. L'idea è che faresti qualcosa nell'ordine del passaggio di una chiave a una mappa che mappe quella chiave al valore che ti interessa passare. Se sia il mittente di intenti che il destinatario di intenti hanno accesso alla mappa, è ansible comunicare un riferimento all'object non-marshallable.

    Non capisco, esattamente, perché pensate che i membri statici non siano quello che vuoi. Immagino che una mappa statica, in un object di applicazione personalizzato, sarebbe esattamente quello che vuoi. … e sospetto, dal tuo commento su WeakHashMaps, che hai scoperto esattamente questo.

    … tranne che niente che tu abbia detto finora spiega perché vuoi rendere la tua mappa debole. Prima di utilizzare una mappa debole, dare un'occhiata a riferimenti morbidi, per assicurarsi che non sia ciò che intendi.

    Buona fortuna

    EDIT:

    Dimentica questa soluzione. Non funziona. Android sta affrontando l'intento che passerai in .startActivity (). Non c'è modo di get alcun riferimento all'interno di un'attività. Questo è – a mio parere – grande bu **** t mio da google. Devi call la tua attività e mettere i riferimenti del tuo object in membri statici …

    Come affermato da G. Blake Meike, non c'è modo di passare i riferimenti di Oggetto in Android tramite Intenti. Ma forse puoi utilizzare WeakReferences .

    Un aticle molto eccellente su questo argomento si trova qui: http://weblogs.java.net/blog/2006/05/04/understanding-weak-references

    Ho trovato questa soluzione attraverso questa domanda: è ansible get il riferimento di riferimento dell'object?

    Quindi quello che sto fondamentalmente a fare è: userò Intenti come chiave per un WeakHashMap e passerò il mio object come valore. Questo sembra essere l'unico Oggetto che è adatto come chiave poiché tutto ciò che hai inserito negli extra di Intenti verrà serializzato. A causa di questo, è ansible passare solo un object per intento. Potresti implementare le sottoclassi all'interno della tua Acitivity che possono contenere i tuoi oggetti e mettere invece questa sottoclass nella mappa. Ma non sono ancora sicuro se l'object Intent che un ricevitore otterrà è lo stesso che il chiamante ha creato ma credo. Se non è così, modificherò questa soluzione (o forse qualcuno potrebbe chiarirlo).

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.