Hizmete gerçekten bağlanmadan bir Android Hizmeti nesnesine bir Amaç aracılığıyla bir nesne göndermek mümkün mü? Ya da belki Servis Nesneleri erişmek için başka bir yol ...Bir nesneyi bağlama olmadan bir hizmete gönderme
cevap
Böyle StartService (Niyet) çağırabilirsiniz:
MyObject obj = new MyObject();
Intent intent = new Intent(this, MyService.class);
intent.putExtra("object", obj);
startService(intent);
Eğer Parcelable uygulamalıdır göndermek istediğiniz nesne (Eğer bu Percelable guide başvurabilirsiniz
:)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
}
}
ve yöntemi onStart içinde Servisi,() veya aPI düzeyinde 5 ve daha yeni için onStartCommand() ile
, nesneyi elde edebilirsiniz vartüm :) Bino gibi
, size bir niyet yoluyla bir hizmete geçmek istiyorsanız, özel nesne Parcelable arabirimini uygulayan olması gerekir söyledi. Bu, nesnenin bir Android IPC-bilge anlamında "serileştirilebilir" olmasını sağlar, böylece onları bir Intent'in nesnesi putExtra (String, Parcelable) çağrısına iletebilirsiniz. Basit ilkel tipleri için
zaten setExtra (String basit bir tür) yöntemleri bir grup var. Anladığım kadarıyla, bu sizin için bir seçenek değil, bu yüzden bir Parsel için gitmeniz gerek.
Eğer Parcelable uygulamak istemiyoruz ve nesne alıcısı olarak
Intent intent = new Intent(activity, MyActivity.class);
Bundle bundle = new Bundle();
bundle.putSerializable("my object", myObject);
intent.putExtras(bundle);
startActivity(intent);
activiy gönderici olarak seri hale
kullanımı bu
ise:
myObject = (MyObject) getIntent().getExtras().getSerializable("my object");
Benim için iyi çalışıyor deneyin. Ancak nesne serializable olmalı :)
çalıştı eğer, ama ben gönderme kısmında, bir şeyi değiştirmek zorunda kaldı: 'intent.putExtra ("geçti nesne", bundle.getSerializable ("my nesne")); Ve alıcı kısmı': 'myObject = (MyObject) intent.getExtras(). GetSerializable (" geçirilen nesne ");' – Ruocco
- 1. android bir hizmet olmadan hizmete başlamak nasıl
- 2. Bir etkinliğin bir Hizmete taşınması
- 3. PHP form gönderme, otomatik olarak bir nesneye eşleme (model bağlama)
- 4. WPF'de bütün bir nesneyi bir kullanıcı denetimine bağlama nasıl?
- 5. Bağlama olmadan NSCollectionView'ı kullanma
- 6. Başka bir uygulamadan bir hizmete bağlanma
- 7. Bir hizmet başka bir hizmete bağlanabilir
- 8. Bir proxy'yi bir hizmete nasıl enjekte edersiniz?
- 9. Selenium Golang bağlama, sunucu olmadan
- 10. Hizmete çözümlenmiş bir sözün enjekte edilmesi
- 11. AngularJS - Sayfadaki bir hizmete önyükleme verileri yükleme
- 12. Hangi Android Uygulama Bileşenleri bir Hizmete bağlanabilir?
- 13. Bir Hizmete sahip olmak SMS iletileri almak
- 14. Bir DLL gereksinimi olmadan zlib'i statik olarak bağlama
- 15. Len olmadan önceki nesneyi al (liste)
- 16. Düzenli bir hizmete nasıl özel bir yöntem eklerim?
- 17. Özel bir hizmeti başka bir özel hizmete nasıl enjekte edersiniz?
- 18. Bir nesneyi klonlamak() nedir?
- 19. Bir nesneyi Javascript
- 20. bir Eloquent nesneyi
- 21. three.js - kameranın bir nesneyi
- 22. @RequestScoped bir nesneyi temizleme?
- 23. Kivy'de bir nesneyi ortalamak
- 24. WinForms veri bağlama - Bir listedeki nesnelere bağlama
- 25. Bağlama Bootstrap'i tek bir div konteynerine bağlama
- 26. Tek bir nesneyi diğer yöntemle hizala
- 27. Kendime bir SMS gönderme
- 28. Bir sunucuya veri gönderme
- 29. XAML Bir dönüştürücüye bağlama
- 30. Bir textarea değeri bağlama
Parsel'e tek bir veri değerinden daha fazlasını nasıl gönderirim? Göndermem gereken iki dizim var. – jax
intent.putExtra ("my.first.string", "bir şey"); intent.putExtra ("my.second.string", "başka bir şey"); – hackbod
Bu hala benim için çalışmıyor. Yukarıdakilerin tümünü yaptım ama hala sorun yaşıyorum. Nesnenin tüm durumunu Parcelable üzerinden nasıl geçireceğim? Dize ve Diziler gibi temel türleri gönderebileceğimi biliyorum, ancak nesneye göre bunlardan daha karmaşık sınıflar içeriyor. Benim için – jax