Domanda

Ho un'applicazione che utilizza un servizio per creare un ArrayList di oggetti personalizzati (MyObject) ogni x secondi. Allora voglio la mia attività per ottenere questo ArrayList.

Attualmente sto pensando di avere il servizio di inviare un messaggio al gestore della attività ogni volta che termina la query per i dati. Voglio che il messaggio al gestore per contenere l'ArrayList di MyObjects.

Quando si costruisce il metodo in attività per ottenere questo ArrayList fuori del messaggio, ho notato che non potevo.

Se ho provato

msg.getData().getParcelableArrayList("myObjects")

Poi il metodo ero di passaggio a che prevede un ArrayList non lo accetterebbe. Se ho provato gettando i risultati:

(ArrayList<MyObject>)msg.getData().getParcelableArrayList("myObjects")

Ho ricevuto l'errore: Cannot cast from ArrayList<Parcelable> to ArrayList<MyObject>

MyObject implementa Parcelable e ho inviato con successo un ArrayList dal mio servizio alla mia attività da avere la mia attività chiamare un metodo sul servizio a recuperarlo. Sto cercando di andare via da avere la mia attività di sondaggio il mio servizio per questi dati, però.

1) Come posso inviare un ArrayList all'interno del fascio in un messaggio al gestore?

2) Esiste un modello diverso dovrei usare per avere il mio servizio di aggiornamento dei dati nella mia attività che possono o non possono essere visibili? Voglio sempre i dati nella mia attività di essere l'ultimo da parte del Servizio.

È stato utile?

Soluzione 2

C'è un altro modello che deve essere utilizzato. Un'altra domanda che ho chiesto fornito la risposta:

reprimere le notifiche da un servizio se l'attività è in esecuzione

Per quanto riguarda il # 1, si potrebbe ottenere intorno ad esso semplicemente rimuovendo i farmaci generici dalle dichiarazioni ArrayList e la colata a seconda dei casi dove necessario. So che questo funziona perché è quello che ho fatto prima refactoring base d'altra domanda posta.

Altri suggerimenti

Ho avuto la stessa identica domanda e mentre ancora hassling con il Parcelable, ho scoperto che le variabili statiche non sono una cattiva idea per il compito.

Si può semplicemente creare un campo statico

public static ArrayList<MyObject> myObjects = .. 

e utilizzarlo da un'altra parte tramite MyRefActivity.myObjects

non ero sicuro di quello che le variabili statiche pubblica implicano nel contesto di una domanda con le attività. Se anche voi avete dubbi su questo o su aspetti delle prestazioni di questo approccio, fare riferimento a:

Saluti.

Se il cast è il problema, basta lasciare che sia, Non gettò, l'errore andrà via.

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