Czy istnieje możliwość wysłania obiektu do usługi Android za pośrednictwem intencji bez rzeczywistego wiązania z usługą? A może inny sposób za usługę dostępu do obiektów ...Wysyłanie obiektu do usługi poprzez Intent bez wiązania
Odpowiedz
Można zadzwonić StartService (intent) tak:
MyObject obj = new MyObject();
Intent intent = new Intent(this, MyService.class);
intent.putExtra("object", obj);
startService(intent);
Przedmiotem chcesz wysłać musi wdrożyć Parcelable (można odwołać się do tego 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
}
}
i z serwisu, w metodzie tej onStart() lub() onStartCommand na poziomie api 5 lub wyższej, można uzyskać obiektu:
MyObject obj = intent.getParcelableExtra("object");
To wszystko :)
jak Bino powiedział, trzeba mieć swój obiekt niestandardowy wdrożyć Parcelable interfejs, jeśli chcesz, aby przekazać je do usługi za pośrednictwem intencji. Spowoduje to, że obiekt stanie się "serializowalny" w sensie Android IPC, dzięki czemu można go przekazać do obiektu Intent o nazwie putExtra (String, Parcable).
W przypadku prostych typów pierwotnych istnieje już kilka metod: setExtra (String, prymitywów). Ponieważ jednak rozumiem cię, nie jest to opcja dla Ciebie, dlatego powinieneś wybrać Parcelę.
Jeśli nie chcą wprowadzić Parcelable a obiekt jest możliwy do serializacji
użycie tego
W nadawcy Activiy
Intent intent = new Intent(activity, MyActivity.class);
Bundle bundle = new Bundle();
bundle.putSerializable("my object", myObject);
intent.putExtras(bundle);
startActivity(intent);
W odbiorniku:
myObject = (MyObject) getIntent().getExtras().getSerializable("my object");
Działa dobrze dla mnie spróbuj. Ale obiekt musi być możliwy do serializacji :)
Dla mnie, jeśli pracował, ale musiałem coś zmienić, w części wysyłającej: 'intent.putExtra (" przekazany obiekt ", bundle.getSerializable (" mój obiekt "));' Oraz odbierającego: 'myObject = (MyObject) intent.getExtras(). GetSerializable (" przekazany obiekt ");' – Ruocco
- 1. Wysyłanie Intent wewnątrz innej intencji
- 2. Krótka droga do std :: funkcja wiązania obiektu do instancji obiektu, bez parametrów wiązania
- 3. Prześlij plik cookie do przeglądarki poprzez Intent
- 4. Jak wysłać PendingIntent do mojej usługi Intent
- 5. odniesienia wiązania poprzez niejednoznaczną operatora konwersji
- 6. Wysyłanie informacji poufnych do usługi REST
- 7. Wysyłanie danych z usługi do aktywności Android
- 8. Flex - Wysyłanie parametru do niestandardowego obiektu ItemRenderer?
- 9. Wysyłanie obiektu JSON do interfejsu API WWW
- 10. Wysyłanie dużego obiektu JSON do ASP.NET MVC
- 11. Wysyłanie struct z jądra do przestrzeni użytkownika poprzez netlink
- 12. Dodaj odwołanie do usługi podczas używania wiązania netTcp
- 13. AngularJS - tworzenie obiektu usługi
- 14. Spring: obiekt wiązania zi bez @ModelAttribute
- 15. Wysyłanie nazwy użytkownika i hasła do usługi WWW
- 16. Wysyłanie parametrów do usługi SOAP ASMX z aplikacji iOS
- 17. Wysyłanie obrazu z systemu Android do usługi sieci Web ASP.NET
- 18. Wysyłanie danych POST bez formularza
- 19. Wysyłanie przekierowania z usługi JAX-RS
- 20. Tworzenie obiektu OrganizationServiceProxy w CRM2011 Wtyczka do używania wczesnego wiązania
- 21. Dostęp do bieżącego obiektu w niestandardowym weryfikatorze wiązania symfony2
- 22. Hosting Silverlight bez usługi IIS
- 23. Wywołanie funkcji obiektu poprzez wskaźniki obiektów
- 24. Jak rekurencyjnie wyliczać poprzez właściwości obiektu?
- 25. Wysyłanie i odbieranie obiektu serializacji na UDP
- 26. Wysyłanie zagnieżdżonego obiektu JSON przy użyciu HTTPie
- 27. ARC: wysyłanie zera do obiektu nie wywołuje natychmiast jego dealloc
- 28. Wysyłanie wiadomości do obiektu za pomocą selektora i NSSelectorFromString
- 29. WPF: Ustaw właściwość wiązania dla wiązania ListBox
- 30. Jak połączyć dwie wartości obiektu poprzez klawisze
Jak wysłać więcej niż jedną wartość danych do Przesyłki? Mam dwa ciągi, które muszę wysłać. – jax
intent.putExtra ("my.first.string", "something"); intent.putExtra ("my.second.string", "something else"); – hackbod
To nadal nie działa dla mnie. Zrobiłem wszystkie powyższe, ale nadal mam problemy. Jak mam przekazać cały stan obiektu przez Parcelable? Wiem, że mogę wysyłać podstawowe typy, takie jak String i Array, ale obiekt zawiera bardziej złożone klasy niż tylko te. – jax