2010-07-30 14 views
6

Android'deki intens'ler, birleştirilmemiş bileşenler arasındaki iletileri iletmenin zarif bir yoludur, ancak Niyet ile daha fazla veri göndermek isterseniz ne olur? Farklı değer türleri ve Parcelable'ı gerçekleştiren nesneleri ekstralar olarak ekleyebileceğinizi biliyorum, ancak bu, kullanıcı tanımlı türlerin yerel olarak (örneğin, uzak arabirim üzerinden değil) gönderilmesi için gerçekten uygun değildir. Herhangi bir fikir?Android'de Intents ile özel veri nesneleri nasıl gönderilir?

cevap

0

Yerel olarak söylediğinizde, bu, aynı APK'ya ait olan Etkinlikler/yerel Hizmetler genelinde kullanıcı tanımlı türlerin gönderilmesi anlamına mı geliyor? Kullanıcı tanımlı tipler ayrıştırılabilir olduğu sürece, amaç olarak ekstralar olarak gönderilebilir ve hizmet/etkinlik onStartCommand() 'da işlenebilir.

+0

ve hepsi aynı uygulama. Şey, karmaşık özel veri türleri için parcelable uygulanması gerçekten acı verici olabilir, tek yapmam gereken bir nesneyi bir Intent ... – MalcomTucker

1

Eğer kendi Application korumak için küresel durumunu uygulayabilirsiniz tek bir işlem içinde nesneleri geçmek istiyorsanız: Küresel uygulama durumunu korumak için ihtiyacı olanlar için

Taban sınıfı. Sen o sınıf application/paketi için işlem oluşturulan olduğunda sizin için örneği olmasına neden olan, sizin AndroidManifest.xml en etiketinde adını belirterek yaparak kendi uygulama sağlayabilir.

senin tipinde
+0

ile transfer etmektir, bu yüzden Uygulamayı paylaşılan veriler için bir çeşit komisyoncu/depolama olarak kullanın. – MalcomTucker

+0

tam olarak, ihtiyacınız varsa bir depo olarak uygulayabilirsiniz –

4

, sen Serializable arabirimini uygulayan ve niyet dahil etmek Intent.putExtra(String, Serializable) yöntemini çağırabilirsiniz. Benzer bir sorun için kendimi yaptığımı düşünmüştüm, ancak verileri bir paket halinde vermeyi tercih ettim çünkü benim türümün yalnızca iki alanı vardı ve bu sadece çabaya değmezdi.

Bu Foo üzerinde Serializable uygulayan varsayarak işe yarayabilir nasıl: Aynı süreçte

Foo test = new Foo(); 
test.Name = "name"; 
test.Value = "value"; 

Intent intent = new Intent(); 
intent.putExtra("test", test); 
AIDL yoluyla değil gibi Yerel
İlgili konular