2010-02-12 24 views

cevap

24

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 var

tüm :) Bino gibi

+0

Parsel'e tek bir veri değerinden daha fazlasını nasıl gönderirim? Göndermem gereken iki dizim var. – jax

+0

intent.putExtra ("my.first.string", "bir şey"); intent.putExtra ("my.second.string", "başka bir şey"); – hackbod

+0

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

1

, 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.

8

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ı :)

+0

ç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