2012-02-14 19 views
12

Android'de bir XMPP sunucusuna bağlanan bir uygulama oluşturuyorum. Kullanıcı oturumunu kapatana dek bağlantıyı sürdürmek istiyorum.Servis veya Sınırlama Hizmeti?

Ben bağlantıyı tutmak için düzenli Service veya bir Bağlı Hizmeti kullanmak gerekir?

Herhangi bir ipucu, tavsiye ve faydalı bilgiler bekliyoruz.

cevap

3

Bir sınır hizmeti, istemci-sunucu arabirimindeki sunucudur. Bir bağlı hizmet, bileşenlerin (örneğin, etkinlikler) hizmete bağlanmasına, istek göndermesine, yanıt almasına ve hatta işlemler arası iletişimi (IPC) gerçekleştirmesine olanak tanır. Bir bağlı hizmet, genellikle yalnızca başka bir uygulama bileşenine hizmet verirken ve arka planda süresiz olarak çalışmadığında yaşar.

tüm kod kullanıcı logout bağlı kullanıcıdan bir etkinlikte yer alıyorsa bağlı hizmet

gitmek Ama kod çoklu faaliyetlere var olup olmadığını arasındaki farkı öğrendim

+0

teşekkürler ** user1203673 **, ikisi arasındaki farkı ve ne zaman kullanıldığını öğrendim. Hizmetle etkileşimde bulunmak istiyorsanız (örneğin argümanları gönderin), bağlı servisi kullanın ve servis nesnesini onServiceConnected yöntemine (serviste yöntemleri çağırabilirsiniz) döndürün. Düzenli bir servisle etkileşime giremezsiniz (başka bir sınıftan). –

1

hizmetiyle deneyin iki ve ne zaman kullanılır? Hizmetle etkileşimde bulunmak isterseniz (örneğin argümanlar gönderin), bağlı servisi kullanın ve servis nesnesini onServiceConnected yöntemine (serviste yöntemleri çağırabilirsiniz) döndürün. Ben bu açıklamayı gibi

+0

Ancak, arabirimler veya Yayıncılar'ı, etkinlikler ve hizmetler arasında bağımsız değişkenler veya işlemler arası iletişimi göndermek için kullanabilirsiniz; –

11

(başka bir sınıftan) düzenli hizmetiyle etkileşim olamaz:

Başlatılan hizmetler ancak, gereksinim duydukları, bir hizmete bir etkinlikten basit bir yolu etkileşimleri için program kolay

Daha karmaşık ve ad hoc programlama, istemcilerle genişletilmiş iki yönlü konuşmalar için.

aksine, bağlı hizmetler faaliyetleri ve hizmetler arasında daha karmaşık iki yönlü etkileşimler için daha iyi bir seçim olabilir. Örneğin, için iki yönlü konuşmaları desteklerler.

Yani, dediğim gibi, hizmetin kullanım bağlı hizmetiyle etkileşim istiyorsanız. Başlatılmış servisler (veya niyetli servisler) ile bunu yapabilirdiniz, sadece daha karmaşık programlamayı gerektirir. (Douglas Schmidt tarafından: https://www.youtube.com/watch?v=cRFw7xaZ_Mg (11'10 '')): Ayrıca bana yardımcı enter image description here

Son olarak, son bir link: Burada

beni (teşekkürler Doug) anlamalarına yardımcı bir özetidir: http://www.techotopia.com/index.php/An_Overview_of_Android_Started_and_Bound_Services

Başlangıç ​​hizmet hizmet durdurulduğunda veya robot ru tarafından yokedilene değin, arka planda süresiz olarak devam potansiyel (örneğin, bir etkinlik ya da bir yayın alıcısı gibi) ve diğer uygulama bileşenleri tarafından başlatılan kaynakların serbest bırakılması için ntime sistemi. Bir hizmet çalışmaya devam edecek, ön planda artık, ve başladı uygulaması bile başlangıçta hizmeti başlatan bileşen A bağlı hizmet ile başlayan hizmete benzer

tahrip edilmesi halinde Başlatılan bir hizmetin genellikle sonuçları döndürmemesi veya onu başlatan bileşenle etkileşime izin vermesi istisnasıdır.Öte yandan, bir sınırlama servisi, başlatıcı bileşenin, hizmet ile etkileşime girmesini ve sonuçların alınmasını sağlar.

+1

IntentService (başlatılmış servis), kullanıcı arayüzünü güncellemek için bir yayın göndermek gibi sonuçları döndürebilir. Veya IntentService, sonuçları geri arama modelini kullanarak da sonuç verebilir. –

+0

Ama arayüzler veya Yayıncılar, argümanlar göndermek veya faaliyetler ve hizmetler arasında süreçler arası iletişimi kullanmak için kullanabilirsiniz, bu yüzden neden bağlı hizmeti kullanın? –

İlgili konular