È possibile inviare un oggetto a un servizio Android tramite un Intent senza effettivamente impegnarsi per il servizio? O forse un altro modo per il Servizio per accedere agli oggetti ...Invio di un oggetto a un servizio tramite Intent senza associazione
risposta
È possibile chiamare StartService (Intent) come questo:
MyObject obj = new MyObject();
Intent intent = new Intent(this, MyService.class);
intent.putExtra("object", obj);
startService(intent);
L'oggetto che si desidera inviare deve implementare Parcelable (è possibile fare riferimento a questo Percelable guide)
class MyObject extends Object implements Parcelable {
@Override
public int describeContents() {
// TODO Auto-generated method stub
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
// TODO Auto-generated method stub
}
}
e con il servizio, nel metodo onStart() o onStartCommand() per il livello di API 5 e successivi, è possibile ottenere l'oggetto:
MyObject obj = intent.getParcelableExtra("object");
Questo è tutto :)
Come Bino Detto questo, è necessario avere il vostro oggetto personalizzato implementi l'interfaccia Parcelable se si desidera passare a un servizio tramite un intento. Questo renderà l'oggetto "serializzabile" in senso IPC per Android in modo che tu possa passarli a una chiamata putExtra (String, Parcelable) dell'oggetto di Intent.
Per i tipi primitivi semplici, esiste già un gruppo di metodi setExtra (String, tipo primitivo). Per quanto ti capisco, tuttavia, questa non è un'opzione per te, motivo per cui dovresti optare per un pacco.
Se non si desidera implementare Parcelable e l'oggetto è serializzabile
uso questo
In mittente activiy
Intent intent = new Intent(activity, MyActivity.class);
Bundle bundle = new Bundle();
bundle.putSerializable("my object", myObject);
intent.putExtras(bundle);
startActivity(intent);
Nel ricevitore:
myObject = (MyObject) getIntent().getExtras().getSerializable("my object");
Funziona bene per me provarlo. Ma l'oggetto deve essere serializzabile :)
Per me se funzionava, ma dovevo cambiare qualcosa, sulla parte di invio: 'intent.putExtra (" oggetto passato ", bundle.getSerializable (" il mio oggetto "));' E sulla parte ricevente: 'myObject = (MyObject) intent.getExtras(). GetSerializable (" oggetto passato ");' – Ruocco
- 1. Associazione di un WSDL personalizzato a un servizio WCF esistente
- 2. Associazione di un servizio a un android.app.Activity vs Associazione a un android.app.Application
- 3. Associazione dati a un oggetto in C#
- 4. come mantenere attivo un servizio Intent
- 5. Invio dell'immagine tramite WhatsApp a un destinatario specifico (Android)
- 6. Invio di un oggetto serializzato da Android a un servlet tramite client HTTP
- 7. Invio di oggetto JSON nidificato tramite HTTPie
- 8. Avviare un frammento tramite Intent all'interno di un frammento
- 9. Associazione di un oggetto TextBlock a proprietà di una finestra
- 10. Perché Intent servizio deve essere esplicita Intent
- 11. Crea associazione vuota nell'ambito di un oggetto
- 12. Riferimento di associazione a un oggetto prima della costruzione
- 13. Passaggio di un oggetto come parametro a un servizio Windows
- 14. Associazione di più eventi a un listener (senza JQuery)?
- 15. Invio di dati tramite metodo post a un iframe
- 16. Come passare un URI a un intent?
- 17. Invio di un oggetto su Internet
- 18. Invio di un oggetto Tuple su WCF?
- 19. Invio di un oggetto JSON all'API Web
- 20. Implementazione delle funzionalità USSD. Associazione di un servizio a PhoneUtils senza riavviare il telefono ad ogni aggiornamento
- 21. Invio di dati in un oggetto JSON
- 22. Spring MVC 3 - Associazione di un oggetto "immutabile" a un modulo
- 23. Associazione di un TypeConverter direttamente a un'enumerazione
- 24. WPF: Associazione dinamica di un elenco a (alcune delle) proprietà di un oggetto
- 25. Servizio host WCF con associazione net.tcp tramite IIS Manager 7.5
- 26. Invio di una notifica da un servizio in Android
- 27. Come ottenere il contesto in un servizio Intent
- 28. Installazione di un servizio topshelf tramite PowerShell
- 29. Invio di dati dal servizio all'attività
- 30. Associazione e connessione di un servizio Android all'esterno di un'attività
Come si invia più di un singolo valore di dati al Parcel? Ho due stringhe che ho bisogno di inviare. – jax
intent.putExtra ("my.first.string", "something"); intent.putExtra ("my.second.string", "qualcos'altro"); – hackbod
Questo non funziona ancora per me. Ho fatto tutto quanto sopra ma sto ancora avendo problemi. Come intendo passare l'intero stato dell'oggetto tramite Parcelable? So di poter inviare tipi di base come String e Arrays ma per oggetto contiene classi più complesse di queste. – jax